說明
- java集合是jdk自帶java核心功能,它主要用來存儲大量同類型數據快速高效穩定的查找、添加、替換,主要分爲List、Set、Map、Queue,前兩個繼承Collection接口,Map爲獨立接口。
分類
-
Collection接口
-
List接口,有序可重複。
- 分類
- ArrayList:底層是數組,默認大小10每次增加一半,線程不安全,效率高,查詢快,增刪慢
Vector:底層數組,查詢快,增刪慢,線程安全,效率低,不再使用。
- 方法
- add(Object),add(index,Object)添加元素
- addAll(List<Object> object) 添加列表
- contains()是否包含元素對象
- containsAll() 是否包含集合對象
- remove() 移除元素或集合對象
- size() 集合大小
- 分類
-
Set接口,無序唯一
- 分類
- HashSet:底層爲哈希表,無序,唯一,保證唯一依賴:hashCode()和equals()
- LinkedHashSet:底層數據結構是鏈表和哈希表,有序,唯一。FIFO(先進先出),鏈表保證元素有序,哈希表保證元素唯一。
- TreeSet:底層紅黑樹,唯一有序。
- HashSet:底層爲哈希表,無序,唯一,保證唯一依賴:hashCode()和equals()
- 方法
- add(Object),add(index,Object)添加元素
- addAll(List<Object> object) 添加列表
- contains()是否包含元素對象
- containsAll() 是否包含集合對象
- remove() 移除元素或集合對象
- size() 集合大小
- 分類
-
Queue接口
- 分類
-
Deque 接口雙端隊列
- LinkedList:底層雙向鏈表,實現Deque接口和list接口,線程不安全,查詢慢,增刪快,效率高,FIFO(先進先出)。
-
不阻塞隊列
- PriorityQueue:實質上維護了一個有序列表。加入Queue的元素根據天然排序(java.util.Comparable 實現)或根據傳遞給構造函數java.util.Comparator實現定位。
- ConcurrentLinkedQueue:基於鏈接節點的、線程安全的隊列。併發訪問不需要同步,因爲它在隊列的尾部添加元素並從頭部刪除它們,所以不需要知道隊列的大小,所以獲取隊列大小慢,需要遍歷隊列
-
阻塞隊列,基於BlockingQueue接口。
- ArrayBlockingQueue:基於數組,構造時必須指定容量,可選擇公平性,使用會有性能損耗,默認FIFO。
- LinkedBlockingQueue:基於鏈表,容量默認Inter.MAX_VALUE,基於鏈表,FIFO先進先出。
- PriorityBlockingQueue:封裝PriorityQueue實現,基於堆內存,理論上無限大,自帶優先級,添加的元素具有比較能力。
- DelayQueue:基於PriorityQueue實現,存放Delayed元素,當延遲期滿時才能提取元素,自帶優先級算法
- SynchronousQueue:利用BlockingQueue的簡單聚合機制
-
- 方法
- put(e),put(e,time,unit)添加一個元素,如果隊列滿,則阻塞
- tak(),take(time,unit)移除並返回隊列頭部信息,如果隊列爲空,則阻塞
- peek,返回隊列頭部,如果爲空,返回null
- poll,移除並返回隊列頭部元素,如果隊列爲空,返回null
- offer,添加一個元素成功返回true,失敗false
- element,返回隊列頭部UAN蘇,如果隊列爲空,拋異常NoSuchElementException
- remove,移除並返回隊列頭部元素,如果隊列爲空,拋異常NoSuchElementException
- add,添加一個元素,如果隊列滿了,拋出異常IIIegaISlabEepeplian
- 分類
-
-
Map接口
- 分類
- Hashtable:底層哈希表,線程安全,效率低,無序。不允許null值,父類Dictionary。
- TreeMap:底層紅黑樹,默認排序升序排序。有序。
- HashMap:默認大小是16,每次增加兩倍,底層哈希表,無序,線程不安全,效率高,key和value允許爲null,父類AbstractMap。jdk1.8採用數組+鏈表+紅黑樹,在鏈表過長的時候可以通過轉換成紅黑樹提升訪問性能
- LinkedHashMap:底層鏈表和哈希表,有序。
- 方法
- put(key,value) 添加數據
- containsKey(key) key是否有該值
- containsValue(value)value是否有該值
- get(key) 獲取key對應value
- keySet() 獲取key,set類型。
- size() 集合大小
- remove()移除元素
- values() 獲取所有value值,Collection類型。
- 分類