遍歷
HashSet作為集合,有多種遍歷方法,如普通for循環(huán),增強(qiáng)for循環(huán),迭代器,我們通過迭代器遍歷來看一下
打印出來的結(jié)果如何呢?
星期二星期三星期四星期五星期一
意料之中吧,HashSet是通過HashMap來實(shí)現(xiàn)的,HashMap通過hash(key)來確定存儲的位置,是不具備存儲順序性的,因此HashSet遍歷出的元素也并非按照插入的順序。
合計(jì)合計(jì)
按照我前面的規(guī)劃,應(yīng)該每一塊主要的內(nèi)容都單獨(dú)寫一下,如集合ArrayList,linkedList,HashMap,TreeMap等。不過我在寫這篇關(guān)于HashSet的文章時,發(fā)現(xiàn)有前面對HashMap的講解后,確實(shí)簡單,HashSet就是一個皮包公司,在HashMap外面加了一個殼,那么linkedHashSet是否就是在linkedHashMap外面加了一個殼呢,而TreeSet是否是在TreeMap外面加了一個殼?我們來驗(yàn)證一下
先看一下linkedHashSet
最開始的結(jié)構(gòu)圖已經(jīng)提到了linkedHashSet是HashSet的子類,我們來看源碼
上面就是linkedHashSet的所有代碼了,是不是感覺智商被否定了,這基本上沒啥東西嘛,構(gòu)造器還全部調(diào)用父類的,下面就是其父類HashSet的對此的構(gòu)造方法
大家也看出來,和我們的猜測一樣,沒有深究下去的必要了。如果有興趣可以看看linkedHashMap如何保證順序性
在看一下TreeSet
確實(shí)如我們所猜測,TreeSet也完全依賴于TreeMap來實(shí)現(xiàn),如果有興趣可以看看TreeMap原理實(shí)現(xiàn)及常用方法
以上就是天津卓眾教育java培訓(xùn)機(jī)構(gòu)的小編針對“新手編程學(xué)習(xí),Java遍歷hashset”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時為你服務(wù)。