集合整體結構圖,List,Set,Map

List,Set,Map

  • List:可以有重複的元素,是有序的數據結構。有 ArrayList、LinkedList
  • Set:不能有重複的元素,是無序的數據結構。有 TreeSet、HashSet
  • Map:存儲的是鍵值對,兩個 key 可以引用相同的對象,但 key 不能重複。有 HashMap、TreeMap

兩大類:Collection,存儲對象的集合;Map,存儲鍵值對

在這裏插入圖片描述

一. Collection

1. Set

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

2. List

  • ArrayList: 基於動態數組實現,支持隨機訪問。
  • LinkedList: 基於雙向鏈表實現,只能順序訪問,但是可以快速地在鏈表中間插入和刪除元素。LinkedList 還可以用作棧、隊列和雙向隊列。

3. Queue

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

二. Map

在這裏插入圖片描述

  • TreeMap:基於紅黑樹實現。
  • HashMap:基於哈希表實現。
  • Hashtable:和 HashMap 類似,但它是線程安全的,這意味着同一時刻多個線程可以同時寫入 Hashtable 並且不會導致數據不一致。現在可以使用 ConcurrentHashMap 來支持線程安全,並且 ConcurrentHashMap 的效率會更高,因爲 ConcurrentHashMap 引入了分段鎖。
  • LinkedHashMap:使用雙向鏈表來維護元素的順序,順序爲插入順序或者最近最少使用(LRU)順序。

Java中哪些集合是有序的?

  • 實現了 List 接口的集合類全部有序:比如ArrayList、LinkedList
  • LinkedHashMap:在 HashMap 的基礎上多維護了一個雙向鏈表。
  • ConcurrentSkipListMap:基於跳錶實現,跳錶內所有的元素都是排序的。
  • TreeMap:基於紅黑樹實現。
  • TreeSet:基於TreeMap實現。

哪些 Map 是有序的?

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