集合
Collection
|---List :元素是有序的,元素可以重複。因爲此集合類有索引。
|--ArrayList:(線程不同步)底層的數據結構使用的是數組結構,查找數據的速度較快。但是增刪的操作稍慢,元素多的時候越明顯。
|--LinkedList:底層數據用的是鏈表數據結構。特點:增刪速度很快,查詢稍慢。
|--Vector:(線程同步)被ArrayList代替了
|-- Stack 棧 後進先出 LIFO 線程安全,支持push(),top(),pop().
|---Set :元素無序,元素不可以重複。
|--HashSet:底層數據是哈希表,元素是無序的。添加、刪除操作時間複雜度都是O(1)
|--LinkedHashSet 元素是有序的,是介於HashSet 和 TreeSet之間,內部是一個雙向鏈表結構。
HashSet是如何保證元素的唯一性的呢?
是通過元素的倆個方法,hashCode和equals來完成的。如果元素的HashCode值相同,就去判斷equals是否爲ture。如果HashCode值不同,就不再判斷 equals
|--TreeSet 內部結構是一個樹結構(紅黑樹),元素是有序的,添加、刪除操作時間複雜度爲O(log(n)),並且提供了first(), last(), headSet(), tailSet()等方法來處理有序集合。
|--EnumSet 元素都是枚舉對象有序,使用位向量的形式存儲,佔用內存小,運行高效,不允許存儲null。
|--- Queue 隊列 FIFO
|--Deque 雙端隊列 查詢效率相比單項隊列高
|--LinkedList 元素是有序的,雙向鏈表結構,增刪快,隨機查詢和遍歷較慢。
|--ArrayDeque 元素有序,數組結構,增刪慢,隨機查詢和遍歷較快。
|--PriorityQueue 元素有序,但是不是按照插入順序先進先出,而是按照大小排列,並非嚴格意義刪的隊列順序
Map
|--- HashTable 元素無序,key不能爲null,線程安全
|--- HashMap 元素無序,key和value 可以爲null ,線程非安全。
|--- LinkedHashMap 元素按按插入前後排序,比HashMap 插入稍慢,由於是鏈表結構迭代順序會快。
|--- AbstractMap
|--- TreeMap 元素是有序的,基於紅黑樹實現。該ßß映射根據其鍵的自然順序進行排序,或者根據創建映射時提供的 Comparator 進行排序,具體取決於使用的構造方法。