1. 程式人生 > >Java面試題——集合(持續更新)

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,表示一個持久的屬性集,屬性列表中每個鍵及其對應值都是一個字串。

BitSet