Java中的list、set、map区别
List 有序,可重復
ArrayList
優點: 底層數據結構是數組,查詢快,增刪慢。
缺點: 線程不安全,效率高
Vector
優點: 底層數據結構是數組,查詢快,增刪慢。
缺點: 線程安全,效率低
LinkedList
優點: 底層數據結構是鏈表,查詢慢,增刪快。
缺點: 線程不安全,效率高
Set 無序,唯一
HashSet
底層數據結構是哈希表。(無序,唯一)
如何來保證元素唯一性?
1.依賴兩個方法:hashCode()和equals()
LinkedHashSet
底層數據結構是鏈表和哈希表。(FIFO插入有序,唯一)
1.由鏈表保證元素有序
2.由哈希表保證元素唯一
TreeSet
底層數據結構是紅黑樹。(唯一,有序)
1. 如何保證元素排序的呢?
自然排序
比較器排序
2.如何保證元素唯一性的呢?
根據比較的返回值是否是0來決定
Map接口有三個比較重要的實現類,分別是HashMap、TreeMap和HashTable。
TreeMap是有序的,HashMap和HashTable是無序的。
Hashtable是線程安全的效率較低 不允許null值,HashMap不是線程安全的效率較高允許null值(key和value都允許)。
?
List和set區別
(1)重復對象
list方法可以允許重復的對象,而set方法不允許重復對象
(2)null元素
list可以插入多個null元素,而set只允許插入一個null元素
(3)容器是否有序
list是一個有序的容器,保持了每個元素的插入順序。即輸出順序就是輸入順序,而set方法是無序容器,無法保證每個元素的存儲順序,TreeSet通過 Comparator 或者 Comparable 維護了一個排序順序
(4)常用的實現類
list方法常用的實現類有ArrayList、LinkedList 和 Vector。其中ArrayList 最為流行,它提供了使用索引的隨意訪問,而LinkedList 則對于經常需要從 List 中添加或刪除元素的場合更為合適,Vector 表示底層數組,線程安全
Set方法中最流行的幾個實現類是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基于 HashMap實現的 HashSet;TreeSet 還實現了 SortedSet 接口,因此 TreeSet 是一個根據其 compare() 和compareTo() 的定義進行排序的有序容器
List和Map的區別
List:是存儲單列數據的集合,存儲的數據是有序并且是可以重復的
Map:存儲雙列數據的集合,通過鍵值對存儲數據,存儲 的數據是無序的,Key值不能重復,value值可以重復
總結
以上是生活随笔為你收集整理的Java中的list、set、map区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马斯克再次唱衰美国经济:衰退不可避免、很
- 下一篇: 错误: 找不到或无法加载主类 org.a