Java面試題——集合(持續更新)
從上面的集合框架圖可以看到,Java 集合框架主要包括兩種型別的容器,一種是集合(Collection),儲存一個元素集合,另一種是圖(Map),儲存鍵/值對對映。Collection 介面又有 3 種子型別,List、Set 和 Queue,再下面是一些抽象類,最後是具體實現類,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。 ##介面描述
Collection 介面
Collection 是最基本的集合介面,一個 Collection 代表一組 Object,即 Collection 的元素, Java不提供直接繼承自Collection的類,只提供繼承於的子介面(如List和set)。Collection 介面儲存一組不唯一,無序的物件。
List 介面
List介面是一個有序的 Collection,使用此介面能夠精確的控制每個元素插入的位置,能夠通過索引(元素在List中位置,類似於陣列的下標)來訪問List中的元素,第一個元素的索引為 0,而且允許有相同的元素。 List 介面儲存一組不唯一,有序(插入順序)的物件。
Set
Set 具有與 Collection 完全一樣的介面,只是行為上不同,Set 不儲存重複的元素。Set 介面儲存一組唯一,無序的物件。
SortedSet
繼承於Set儲存有序的集合。
Map
Map 介面儲存一組鍵值物件,提供key(鍵)到value(值)的對映。
Map.Entry
描述在一個Map中的一個元素(鍵/值對)。是一個Map的內部類。
SortedMap
繼承於 Map,使 Key 保持在升序排列。
Enumeration
這是一個傳統的介面和定義的方法,通過它可以列舉(一次獲得一個)物件集合中的元素。這個傳統介面已被迭代器取代。
集合實現類(集合類)
AbstractCollection
實現了大部分的集合介面。
AbstractList
繼承於AbstractCollection 並且實現了大部分List介面。
AbstractSequentialList
繼承於 AbstractList ,提供了對資料元素的鏈式訪問而不是隨機訪問。
LinkedList
該類實現了List介面,允許有null(空)元素。主要用於建立連結串列資料結構,該類沒有同步方法,如果多個執行緒同時訪問一個List,則必須自己實現訪問同步,解決方法就是在建立List時候構造一個同步的List。例如: Listlist=Collections.synchronizedList(newLinkedList(…)); LinkedList 查詢效率低。
ArrayList
該類也是實現了List的介面,實現了可變大小的陣列,隨機訪問和遍歷元素時,提供更好的效能。該類也是非同步的,在多執行緒的情況下不要使用。ArrayList 增長當前長度的50%,插入刪除效率低。
AbstractSet
繼承於AbstractCollection 並且實現了大部分Set介面。
HashSet
該類實現了Set介面,不允許出現重複元素,不保證集合中元素的順序,允許包含值為null的元素,但最多隻能一個。
LinkedHashSet
具有可預知迭代順序的 Set 介面的雜湊表和連結列表實現。
TreeSet
該類實現了Set介面,可以實現排序等功能。
AbstractMap
實現了大部分的Map介面。
HashMap
HashMap 是一個散列表,它儲存的內容是鍵值對(key-value)對映。該類實現了Map介面,根據鍵的HashCode值儲存資料,具有很快的訪問速度,最多允許一條記錄的鍵為null,不支援執行緒同步。
TreeMap
繼承了AbstractMap,並且使用一顆樹。
WeakHashMap
繼承AbstractMap類,使用弱金鑰的雜湊表。
LinkedHashMap
繼承於HashMap,使用元素的自然順序對元素進行排序.
IdentityHashMap
繼承AbstractMap類,比較文件時使用引用相等。
Vector
該類和ArrayList非常相似,但是該類是同步的,可以用在多執行緒的情況,該類允許設定預設的增長長度,預設擴容方式為原來的2倍。
stack
棧是Vector的一個子類,它實現了一個標準的後進先出的棧。
Dictionary
Dictionary 類是一個抽象類,用來儲存鍵/值對,作用和Map類相似。
Hashtable
Hashtable 是 Dictionary(字典) 類的子類,位於 java.util 包中。
Properties
Properties 繼承於 Hashtable,表示一個持久的屬性集,屬性列表中每個鍵及其對應值都是一個字串。