日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java map与set的区别_java 集合(list,set,map)三者之间的关系和区别

發(fā)布時(shí)間:2023/12/2 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java map与set的区别_java 集合(list,set,map)三者之间的关系和区别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java 集合(list,set,map)三者之間的關(guān)系和區(qū)別

一:先上一張關(guān)系圖,讓大家看的更明白。

備注:其中紅色部分為實(shí)現(xiàn),其他地方均為接口。

二:各自的特點(diǎn)。

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 無(wú)序,唯一

HashSet

底層數(shù)據(jù)結(jié)構(gòu)是哈希表。(無(wú)序,唯一)

如何來(lái)保證元素唯一性?

1.依賴兩個(gè)方法:hashCode()和equals()

LinkedHashSet

底層數(shù)據(jù)結(jié)構(gòu)是鏈表和哈希表。(FIFO插入有序,唯一)

1.由鏈表保證元素有序

2.由哈希表保證元素唯一

TreeSet

底層數(shù)據(jù)結(jié)構(gòu)是紅黑樹(shù)。(唯一,有序)

1. 如何保證元素排序的呢?

自然排序,比較器排序

2.如何保證元素唯一性的呢?

根據(jù)比較的返回值是否是0來(lái)決定

三:我們?cè)趺磥?lái)使用。

針對(duì)Collection集合我們到底使用誰(shuí)呢?

唯一嗎?

是 > set > 排序嗎 ?

是:TreeSet或LinkedHashSet

否:HashSet

否 > list > 要安全嗎?

是:vector

否:ArrayList 或 LinkedList

四:Map。

有序:TreeMap

無(wú)序:HashMap和HashTable

HashMap

jdk1.7 底層為數(shù)組+單鏈

jdk1.8 底層為數(shù)組+單鏈+紅黑樹(shù),默認(rèn)長(zhǎng)度為16,為什么是16不是其他的數(shù)字呢,只要是2的次冪就可以了。負(fù)載因子為0.75,當(dāng)鏈表的長(zhǎng)度大于8時(shí),轉(zhuǎn)為紅黑樹(shù)。

LinkedList

LinkedList是基于鏈表的,它是一個(gè)雙向鏈表,每個(gè)節(jié)點(diǎn)維護(hù)了一個(gè)prev和next指針。同時(shí)對(duì)于這個(gè)鏈表,維護(hù)了first和last指針,first指向第一個(gè)元素,last指向最后一個(gè)元素。LinkedList是一個(gè)無(wú)序的鏈表,按照插入的先后順序排序,不提供sort方法對(duì)內(nèi)部元素排序。

HashSet

HashSet是基于HashMap來(lái)實(shí)現(xiàn)的,操作很簡(jiǎn)單,更像是對(duì)HashMap做了一次“封裝”,而且只使用了HashMap的key來(lái)實(shí)現(xiàn)各種特性,而HashMap的value始終都是PRESENT。

HashSet不允許重復(fù)(HashMap的key不允許重復(fù),如果出現(xiàn)重復(fù)就覆蓋),允許null值,非線程安全。

總結(jié)

以上是生活随笔為你收集整理的java map与set的区别_java 集合(list,set,map)三者之间的关系和区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。