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