課程
/后端開(kāi)發(fā)
/Java
/Java入門第三季
Set集合遍歷輸出,加到了7個(gè)元素,在輸入順序不變的情況下,輸出依然與前一次順序一致。沒(méi)有發(fā)現(xiàn)兩次輸出不一樣。為什么
2017-03-08
源自:Java入門第三季 4-11
正在回答
所謂無(wú)序(unordered),就是 Java 語(yǔ)言沒(méi)有規(guī)定 HashSet 按什么順序遍歷。你應(yīng)該知道,有好多種 Java 虛擬機(jī)。有的運(yùn)行在Windows上,有的運(yùn)行在 Linux上。即使在同一個(gè)平臺(tái)上,也會(huì)有好幾種虛擬機(jī)。每種虛擬機(jī)對(duì) HashSet的實(shí)現(xiàn)都是不一樣的,所以每種虛擬機(jī)對(duì) HashSet 的遍歷順序可能都不太一樣。但對(duì)同一種虛擬機(jī)來(lái)說(shuō),你的遍歷輸出都是一樣的。 Java 是跨派臺(tái)的,你寫的程序可能會(huì)在不同的平臺(tái)上運(yùn)行,這些平臺(tái)上的虛擬機(jī)都是不一樣的。如果你選用了 HashSet,就要明白,在不同的平臺(tái)上,遍歷順序可能會(huì)不一樣。如果你對(duì)遍歷順序有要求,就要考慮使用有序的,或排序的容器。有序(ordered),就是 Java 規(guī)定了容器的遍歷順序。這個(gè)順序就是你在容器中加入元素的順序。LinkedHashSet就是一個(gè)有序的容器。不同的虛擬機(jī)可以用不同的方法來(lái)實(shí)現(xiàn),但都得保證遍歷的順序跟加入元素的順序一致。排序(sorted)。對(duì)這樣的容器,不管你加入元素的順序是什么樣的,遍歷都是排好序的。比如你的容器里存的是 Integer,你先加入 5,然后又加入了 1,3, 9。最后的遍歷順序是 1,3,5,9。這樣的容器是使用 Comparable 或 Comparator來(lái)對(duì)元素進(jìn)行排序的。TreeSet就是一個(gè)排序容器。你在程序中把 HashSet 換成 LinkedHashSet 或 TreeSet 試試,看輸出有什么變化。
舉報(bào)
Java中你必須懂得常用技能,不容錯(cuò)過(guò)的精彩,快來(lái)加入吧
4 回答遍歷set集合 有序輸出
1 回答通過(guò)Iterator遍歷set集合元素 遍歷不出來(lái)
2 回答老師,為什么遍歷Set集合里的元素,一直都是有序的輸出呢?
14 回答set集合怎么是順序輸出?
1 回答我的Set集合用foreach遍歷輸出為什么是這樣的
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2017-03-08
所謂無(wú)序(unordered),就是 Java 語(yǔ)言沒(méi)有規(guī)定 HashSet 按什么順序遍歷。你應(yīng)該知道,有好多種 Java 虛擬機(jī)。有的運(yùn)行在Windows上,有的運(yùn)行在 Linux上。即使在同一個(gè)平臺(tái)上,也會(huì)有好幾種虛擬機(jī)。每種虛擬機(jī)對(duì) HashSet的實(shí)現(xiàn)都是不一樣的,所以每種虛擬機(jī)對(duì) HashSet 的遍歷順序可能都不太一樣。但對(duì)同一種虛擬機(jī)來(lái)說(shuō),你的遍歷輸出都是一樣的。 Java 是跨派臺(tái)的,你寫的程序可能會(huì)在不同的平臺(tái)上運(yùn)行,這些平臺(tái)上的虛擬機(jī)都是不一樣的。如果你選用了 HashSet,就要明白,在不同的平臺(tái)上,遍歷順序可能會(huì)不一樣。如果你對(duì)遍歷順序有要求,就要考慮使用有序的,或排序的容器。
有序(ordered),就是 Java 規(guī)定了容器的遍歷順序。這個(gè)順序就是你在容器中加入元素的順序。LinkedHashSet就是一個(gè)有序的容器。不同的虛擬機(jī)可以用不同的方法來(lái)實(shí)現(xiàn),但都得保證遍歷的順序跟加入元素的順序一致。
排序(sorted)。對(duì)這樣的容器,不管你加入元素的順序是什么樣的,遍歷都是排好序的。比如你的容器里存的是 Integer,你先加入 5,然后又加入了 1,3, 9。最后的遍歷順序是 1,3,5,9。這樣的容器是使用 Comparable 或 Comparator來(lái)對(duì)元素進(jìn)行排序的。TreeSet就是一個(gè)排序容器。
你在程序中把 HashSet 換成 LinkedHashSet 或 TreeSet 試試,看輸出有什么變化。