Java基礎知識八之容器

Java基礎知識中有一個很重要知識點,那就是容器。在Jdk中主要的容器是Collection

容器主要包括 Collection 和 Map 兩種,Collection 存儲着對象的集合,而 Map 存儲着鍵值對(兩個對象)的映射表。

接下來就詳細介紹下。

 

1. Set

  • TreeSet:基於紅黑樹實現,支持有序性操作,例如根據一個範圍查找元素的操作。但是查找效率不如 HashSet,HashSet 查找的時間複雜度爲 O(1),TreeSet 則爲 O(logN)。

  • HashSet:基於哈希表實現,支持快速查找,但不支持有序性操作。並且失去了元素的插入順序信息,也就是說使用 Iterator 遍歷 HashSet 得到的結果是不確定的。

  • LinkedHashSet:具有 HashSet 的查找效率,並且內部使用雙向鏈表維護元素的插入順序。

2. List

  • ArrayList:基於動態數組實現,支持隨機訪問。

  • Vector:和 ArrayList 類似,但它是線程安全的。

  • LinkedList:基於雙向鏈表實現,只能順序訪問,但是可以快速地在鏈表中間插入和刪除元素。不僅如此,LinkedList 還可以用作棧、隊列和雙向隊列。

3. Queue

  • LinkedList:可以用它來實現雙向隊列。

  • PriorityQueue:基於堆結構實現,可以用它來實現優先隊列。

 

  • TreeMap:基於紅黑樹實現。

  • HashMap:基於哈希表實現。

  • HashTable:和 HashMap 類似,但它是線程安全的,這意味着同一時刻多個線程同時寫入 HashTable 不會導致數據不一致。它是遺留類,不應該去使用它,而是使用 ConcurrentHashMap 來支持線程安全,ConcurrentHashMap 的效率會更高,因爲 ConcurrentHashMap 引入了分段鎖。

  • LinkedHashMap:使用雙向鏈表來維護元素的順序,順序爲插入順序或者最近最少使用(LRU)順序。

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章