java集合接口
核心的接口是被封裝為不同類型的集合,如下圖所示。這些接口允許集合去操作獨立的細節和實現。核心的集合接口是java集合框架的基礎。正如你在下圖看到的,這些核心接口來自于一個層次關系。

Set
是一個特定類型的集合,SortedSet
是一個特定類型的Set。從上圖可以看到,有兩顆分開的樹,[map
][3]不是一個真正的Collection
。
所有的核心集合接口都是通用的,例如,下面是[Collection][1]的接口聲明:
public interface Collection<E>...
<E>
語法告訴你這個接口是通用的。當你聲明一個集合實例的時候,你應該指定這個集合中包含對象的類型。指定類型的好處是,在編譯時,允許編譯器去校驗你put
到集合的對象是否時正確的,減少了運行時錯誤。
當你知道如何使用這些接口的時候,你將會明白更多的有關java集合框架的東西。
下面的列表描述了核心的集合接口
- **Collection ** 集合接口層次的最頂層接口。集合表示為一組對象。
Collection
接口是所有集合實現的最小單位。封裝了所有集合的最通用性的操作。一些類型的集合允許重復元素,而其他不允許。有些是有序的,有些是無須的。java平臺不提供任何該接口的直接實現,而是提供更具體的子接口的實現,比如Set
和List
.具體請看The Collection Interface. - Set 不能包含重復元素的集合,是對數學上的集合進行的抽象。請參考The Set Interface
- **list ** 一個排序的集合。有時被稱為序列。可以包含重復的對象,可以通過索引定位到元素。請參考The List Interface
- Queue 用于在處理之前保存多個元素的集合。除了基本的集合操作之外,隊列提供額外的插入,提取和檢查操作。隊列通常但不一定以FIFO(先進先出)方式對元素排序。比如,優先級隊列,其根據提供的比較器或元素的自然排序來排序元素。無論使用什么排序,隊列的頭部都是通過調用remove或poll來刪除的元素。在FIFO隊列中,所有新元素都插入到隊列的尾部。其他類型的隊列可以使用不同的布置規則。每個隊列實現必須指定其排序屬性。另請參閱隊列接口部分。請參照The Queue Interface
-
Deque 用于在處理之前保存多個元素的集合。除了基本的收集操作,
Deque
還提供額外的插入,提取和檢查操作。Deques
可以用作FIFO(先進先出)和LIFO(后進先出)。在deque
中,所有新元素可以在兩端插入,檢索和刪除。另請參閱Deque接口
部分。請參照The Deque interface -
Map 將鍵映射到值的對象。
map
中不能包含重復的鍵;每個鍵可以映射到至多一個值。如果你已經使用Hashtable
,你已經熟悉了Map的基礎知識。另見地圖界面部分。請參照The Map Interface
最后兩個核心的集合接口是Set
和Map
的排序版本
SortedSet
一個有序的Set集合,默認排序為升序。提供了一些操作去利用這個順序。用于自然排序的集合,例如單詞列表和成員資格卷。另請參見SortedSet
接口部分。-
SortedMap
一個有序的Map集合,默認排序為升序。這是一個類似SortedSet
的map。用于自然排序的鍵值對組合,比如詞典或者是電話薄。想了解有序集合接口維護內部元素順序的原因,請參考
Object Ordering
Collection
Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)。一些 Collection允許相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接繼承自Collection的類,Java SDK提供的類都是繼承自Collection的“子接口”如List和Set。
所有實現Collection接口的類都必須提供兩個標準的構造函數:無參數的構造函數用于創建一個空的Collection,有一個 Collection參數的構造函數用于創建一個新的Collection,這個新的Collection與傳入的Collection有相同的元素。后 一個構造函數允許用戶復制一個Collection。
如何遍歷Collection中的每一個元素?不論Collection的實際類型如何,它都支持一個iterator()的方法,該方法返回一個迭代子,使用該迭代子即可逐一訪問Collection中每一個元素。典型的用法如下:
Iterator it = collection.iterator(); // 獲得一個迭代器
while(it.hasNext()) {
Object obj = it.next(); // 得到下一個元素
}
由Collection接口派生的兩個接口是List和Set。
List
位置訪問 基于他們在列表中的索引下標操作元素。包括
get
set
add
addAll
remove
等方法;查找 查找某一個特定的對象將會返回這個對象的下標。 比如
indexOf
和lastIndexOf
;迭代 繼承了
Iterator
,利用列表的順序屬性;-
range-view 使用
subList
方法可以對某個范圍的列表進行操作java平臺包括了兩個
list
接口的實現,一個是ArrayList
,一般情況下它的性能是最好的,另一個實現是LinkedList
,在某些情況下它的性能是好的。 -
它的一些操作
-
remove
,總是remove第一次出現的某個特定的元素。 -
add
和addAll
,總是在集合的尾部追加這些新的元素。
-