日常記憶之Java集合框架

Java集合框架

集合框架被設(shè)計(jì)成要滿足以下幾個(gè)目標(biāo)。

  • 該框架必須是高性能的。基本集合(動(dòng)態(tài)數(shù)組,鏈表,樹(shù),哈希表)的實(shí)現(xiàn)也必須是高效的。
  • 該框架允許不同類型的集合,以類似的方式工作,具有高度的互操作性。
  • 對(duì)一個(gè)集合的擴(kuò)展和適應(yīng)必須是簡(jiǎn)單的。
    為此,整個(gè)集合框架就圍繞一組標(biāo)準(zhǔn)接口而設(shè)計(jì)。你可以直接使用這些接口的標(biāo)準(zhǔn)實(shí)現(xiàn),諸如: LinkedList, HashSet, 和 TreeSet等,除此之外你也可以通過(guò)這些接口實(shí)現(xiàn)自己的集合。
    集合框架是一個(gè)用來(lái)代表和操縱集合的統(tǒng)一架構(gòu)。所有的集合框架都包含如下內(nèi)容:
  • 接口:是代表集合的抽象數(shù)據(jù)類型。接口允許集合獨(dú)立操縱其代表的細(xì)節(jié)。在面向?qū)ο蟮恼Z(yǔ)言,接口通常形成一個(gè)層次。
  • 實(shí)現(xiàn)(類):是集合接口的具體實(shí)現(xiàn)。從本質(zhì)上講,它們是可重復(fù)使用的數(shù)據(jù)結(jié)構(gòu)。
  • 算法:是實(shí)現(xiàn)集合接口的對(duì)象里的方法執(zhí)行的一些有用的計(jì)算,例如:搜索和排序。這些算法被稱為多態(tài),那是因?yàn)橄嗤姆椒梢栽谙嗨频慕涌谏嫌兄煌膶?shí)現(xiàn)。
    除了集合,該框架也定義了幾個(gè)Map接口和類。Map里存儲(chǔ)的是鍵/值對(duì)。盡管Map不是collections,但是它們完全整合在集合中。

集合接口

集合框架定義了一些接口。

序號(hào) 接口描述
1 Collection 接口 允許你使用一組對(duì)象,是Collection層次結(jié)構(gòu)的根接口。
2 List 接口 繼承于Collection和一個(gè) List實(shí)例存儲(chǔ)一個(gè)有序集合的元素。
3 Set 繼承于 Collection,是一個(gè)不包含重復(fù)元素的集合。
4 SortedSet 繼承于Set保存有序的集合。
5 Map 將唯一的鍵映射到值。
6 Map.Entry 描述在一個(gè)Map中的一個(gè)元素(鍵/值對(duì))。是一個(gè)Map的內(nèi)部類。
7 SortedMap 繼承于Map,使Key保持在升序排列。
8 Enumeration 這是一個(gè)傳統(tǒng)的接口和定義的方法,通過(guò)它可以枚舉(一次獲得一個(gè))對(duì)象集合中的元素。這個(gè)傳統(tǒng)接口已被迭代器取代。

集合類
Java提供了一套實(shí)現(xiàn)了Collection接口的標(biāo)準(zhǔn)集合類。其中一些是具體類,這些類可以直接拿來(lái)使用,而另外一些是抽象類,提供了接口的部分實(shí)現(xiàn)。

序號(hào) 類描述
1 AbstractCollection 實(shí)現(xiàn)了大部分的集合接口。
2 AbstractList 繼承于AbstractCollection 并且實(shí)現(xiàn)了大部分List接口。
3 AbstractSequentialList 繼承于 AbstractList ,提供了對(duì)數(shù)據(jù)元素的鏈?zhǔn)皆L問(wèn)而不是隨機(jī)訪問(wèn)。
4 LinkedList 繼承于 AbstractSequentialList,實(shí)現(xiàn)了一個(gè)鏈表。
5 ArrayList 通過(guò)繼承AbstractList,實(shí)現(xiàn)動(dòng)態(tài)數(shù)組。
6 AbstractSet 繼承于AbstractCollection 并且實(shí)現(xiàn)了大部分Set接口。
7 HashSet 繼承了AbstractSet,并且使用一個(gè)哈希表。
8 LinkedHashSet 具有可預(yù)知迭代順序的 Set 接口的哈希表和鏈接列表實(shí)現(xiàn)。
9 TreeSet 繼承于AbstractSet,使用元素的自然順序?qū)υ剡M(jìn)行排序.
10 AbstractMap 實(shí)現(xiàn)了大部分的Map接口。
11 HashMap 繼承了HashMap,并且使用一個(gè)哈希表。
12 TreeMap 繼承了AbstractMap,并且使用一顆樹(shù)。
13 WeakHashMap 繼承AbstractMap類,使用弱密鑰的哈希表。
14 LinkedHashMap 繼承于HashMap,使用元素的自然順序?qū)υ剡M(jìn)行排序.
15 IdentityHashMap 繼承AbstractMap類,比較文檔時(shí)使用引用相等。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 冬日里的星期天上午,窗外霧氣茫茫沒(méi)有一絲風(fēng),屋頂?shù)姆e雪反射出陰冷的天光,陰沉的天空透著一種刺骨的寒冷。家里的暖氣...
    馬范橋人閱讀 2,459評(píng)論 21 88
  • t() { ufnsui() { us(2.3,"visibility","visible") } hs("htt...
    d8826a195dbf閱讀 341評(píng)論 0 0
  • 小學(xué)六年級(jí)的時(shí)候,剛開(kāi)始做同桌。關(guān)系一般,漸漸的,彼此都是對(duì)方最好的依靠。 記得初一那天去學(xué)校報(bào)名,她站在操...
    7b7f6dec6fe2閱讀 222評(píng)論 0 0
  • 1.午飯的時(shí)候,小徒弟扒拉著米飯,食欲不振,“算了,吃不下。”她賭氣似的把筷子放在餐盤里,伸手去拿勺子去盛銀耳湯。...
    提提醬的小宇宙閱讀 470評(píng)論 0 0
  • 年邁回鄉(xiāng)來(lái),漸覺(jué)取樂(lè)難。 常愁易衰老,強(qiáng)飲亦無(wú)歡。 夫妻野外走,菊花遍地開(kāi)。 菊花茶當(dāng)飲,宜神盡開(kāi)顏。
    噴泉閱讀 290評(píng)論 0 5

友情鏈接更多精彩內(nèi)容