Java™ 教程(集合實現)

集合實現

實現是用於存儲集合的數據對象,它實現了接口部分中描述的接口,本節描述瞭如下幾種實現:html

  • 通用實現是最經常使用的實現,專爲平常使用而設計。
  • 專用實現旨在用於特殊狀況,並顯示非標準性能特徵、使用限制或行爲。
  • 併發實現旨在支持高併發性,一般以單線程性能爲代價,這些實現是java.util.concurrent包的一部分。
  • 包裝器實現與其餘類型的實現(一般是通用實現)結合使用,以提供增長的或受限制的功能。
  • 便利實現是一般經過靜態工廠方法提供的小型實現,爲特殊集合(例如,單例集)的通用實現提供方便、有效的替代方案。
  • 抽象實現是骨架實現,有助於構建自定義實現,一個高級主題,並非特別困難,但相對較少的人須要這樣作。

通用實現總結在下表中。java

接口 哈希表實現 可調整大小的數組實現 樹實現 鏈表實現 哈希表+鏈表實現
Set HashSet TreeSet LinkedHashSet
List ArrayList LinkedList
Queue
Deque ArrayDeque LinkedList
Map HashMap TreeMap LinkedHashMap

從表中能夠看到,Java集合框架提供了SetListMap接口的幾種通用實現。在每種狀況下,其餘全部條件都相同狀況下,一個實現(HashSetArrayListHashMap)顯然是用於大多數應用程序的一個實現。請注意,SortedSetSortedMap接口在表中沒有列出,每一個接口都有一個實現(TreeSetTreeMap),並在SetMap行中列出。有兩種通用的Queue實現 — LinkedList(它也是List實現)和PriorityQueue(表中省略)。這兩種實現提供了很是不一樣的語義:LinkedList提供FIFO語義,而PriorityQueue根據其值對元素進行排序。程序員

每一個通用實現都提供其接口中包含的全部可選操做,所有容許null元素、鍵和值,都不是同步的(線程安全的),它們都具備快速失敗的迭代器,該迭代器可在迭代過程當中檢測到非法的併發修改,而且能夠快速乾淨地失敗,而不會在將來的不肯定時間冒着任意、不肯定的行爲的風險。所有都是Serializable,而且都支持公共clone方法。編程

這些實現不一樣步的事實表明了與過去的突破:遺留集合VectorHashtable已同步,之因此採用本方法,是由於在同步沒有好處的狀況下常用集合。這些用途包括單線程使用、只讀使用和做爲實現自身同步的較大數據對象的一部分使用,一般,最好的API設計作法是不要讓用戶爲不使用的功能付費,此外,在某些狀況下,沒必要要的同步可能致使死鎖。segmentfault

若是須要線程安全的集合,則在「包裝實現」部分中介紹的同步包裝器容許將任何集合轉換爲同步集合。所以,對於通用實現來講,同步是可選的,而對於遺留實現來講,它是強制性的。此外,java.util.concurrent包提供了BlockingQueue接口(擴展Queue)和ConcurrentMap接口(擴展Map)的併發實現,這些實現比單純的同步實現提供更高的併發性。api

一般,你應該考慮接口,而不是實現,這就是爲何本節中沒有編程示例的緣由,在大多數狀況下,實現的選擇僅影響性能。首選樣式,如「接口」部分所述,是在建立集合時選擇一種實現,並當即將新集合分配給相應接口類型的變量(或將集合傳遞給須要接口類型參數的方法)。這樣,程序就不會依賴於給定實現中添加的任何方法,從而使程序員在有性能問題或行爲細節保證的任什麼時候候均可以自由更改實現。數組

實現總結

實現是用於存儲集合的數據對象,它們實現了接口課程中描述的接口。安全

Java集合框架提供了幾個核心接口的通用實現:併發

  • 對於Set接口,HashSet是最經常使用的實現。
  • 對於List接口,ArrayList是最經常使用的實現。
  • 對於Map接口,HashMap是最經常使用的實現。
  • 對於Queue接口,LinkedList是最經常使用的實現。
  • 對於Deque接口,ArrayDeque是最經常使用的實現。

每一個通用實現都提供其接口中包含的全部可選操做。oracle

Java集合框架還爲須要非標準性能、使用限制或其餘異常行爲的狀況提供了幾種特殊用途的實現。

java.util.concurrent包包含幾個集合實現,這些實現是線程安全的,但不受單個排除鎖的約束。

Collections類(與Collection接口相對)提供了對集合進行操做或返回集合的靜態方法,這些方法稱爲包裝實現。

最後,有幾種便利的實現,當你不須要通用實現時,它們的效率可能會比通用實現高,可經過靜態工廠方法提供便捷實現。


上一篇:聚合並行性

相關文章
相關標籤/搜索