更新時(shí)間:2020-05-21 14:52:29 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3068次
遍歷
HashSet作為集合,有多種遍歷方法,如普通for循環(huán),增強(qiáng)for循環(huán),迭代器,我們通過(guò)迭代器遍歷來(lái)看一下
打印出來(lái)的結(jié)果如何呢?
星期二
星期三
星期四
星期五
星期一
意料之中吧,HashSet是通過(guò)HashMap來(lái)實(shí)現(xiàn)的,HashMap通過(guò)hash(key)來(lái)確定存儲(chǔ)的位置,是不具備存儲(chǔ)順序性的,因此HashSet遍歷出的元素也并非按照插入的順序。
合計(jì)合計(jì)
按照我前面的規(guī)劃,應(yīng)該每一塊主要的內(nèi)容都單獨(dú)寫(xiě)一下,如集合ArrayList,LinkedList,HashMap,TreeMap等。不過(guò)我在寫(xiě)這篇關(guān)于HashSet的文章時(shí),發(fā)現(xiàn)有前面對(duì)HashMap的講解后,確實(shí)簡(jiǎn)單,HashSet就是一個(gè)皮包公司,在HashMap外面加了一個(gè)殼,那么LinkedHashSet是否就是在LinkedHashMap外面加了一個(gè)殼呢,而TreeSet是否是在TreeMap外面加了一個(gè)殼?我們來(lái)驗(yàn)證一下
先看一下LinkedHashSet
最開(kāi)始的結(jié)構(gòu)圖已經(jīng)提到了LinkedHashSet是HashSet的子類(lèi),我們來(lái)看源碼
上面就是LinkedHashSet的所有代碼了,是不是感覺(jué)智商被否定了,這基本上沒(méi)啥東西嘛,構(gòu)造器還全部調(diào)用父類(lèi)的,下面就是其父類(lèi)HashSet的對(duì)此的構(gòu)造方法
大家也看出來(lái),和我們的猜測(cè)一樣,沒(méi)有深究下去的必要了。如果有興趣可以看看LinkedHashMap如何保證順序性
在看一下TreeSet
確實(shí)如我們所猜測(cè),TreeSet也完全依賴(lài)于TreeMap來(lái)實(shí)現(xiàn),如果有興趣可以看看TreeMap原理實(shí)現(xiàn)及常用方法
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“新手編程學(xué)習(xí),Java遍歷hashset”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743