常用容器可分爲Collection和Map,Collection是存儲對象的集合,而Map是存儲鍵值對的集合。
其中,Collection又分爲List、Set、Queue,而Map的實現類爲HashMap、LinkedHashMap、TreeMap、HashTable。
List接口(有序,可重複):
- ArrayList:底層是動態數組,支持隨機訪問。
- LinkedList:底層是雙向鏈表,只能順序訪問。
Set接口(不可重複):
- HashSet(無序):基於哈希表。支持快速查找,但不支持有序性操作,且不維持插入順序信息。
- TreeSet(有序):底層是紅黑樹。支持快速查找(O(logn))但效率比HashSet(O(1))低。支持有序性操作,例如在一定範圍內查找元素。
- LinkedHashSet(有序):底層是鏈表+哈希表。使用哈希表存儲元素,再維護一個雙向鏈表保存元素的插入信息。
Queue接口:
- LinkedList:可實現雙向隊列
- PriorityQueue:基於堆結構的優先隊列。
Map接口:
- HashMap:基於哈希表。
- LinkedHashMap:使用雙向鏈表維護插入順序。
- HashTable:線程安全的HashMap,已淘汰。推薦ConcurrentHashMap。
- TreeMap:基於紅黑樹。