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