簡體   English   中英

如何在Java 9 Set.of中保持順序

[英]How to keep order in Java 9 Set.of

我在測試時注意到Java 9的新Set.of方法不會返回Set的有序實現。

如何使用此類實用程序並仍能獲得有序的收藏集? 還是沒有辦法,只有傳統的?

例:

Set mySet = Set.of(new Integer[]{1, 2, 3, 4});
//mySet can come in any order when I iterate over it

編輯
忘了提,我需要保持數組中的順序。

從答案來看,似乎仍然可以使用舊的new LinkedHashSet(Arrays.asList(myArr))

Set.of創建的不可變Set不能保證其元素的迭代順序。 您可以使用一個特定的實現,例如LinkedHashSet

Set<Integer> mySet = new LinkedHashSet<>(List.of(new Integer[]{1, 2, 3, 4}));

Javadoc明確聲明:“ set元素的迭代順序未指定,並且可能會發生變化。”

您可以將集合包裝在像TreeSet這樣的排序集合中(我還添加了一些泛型)

 SortedSet<Integer> mySet = new TreeSet<>(Set.of(1, 2, 3, 4));

如果需要一個保持插入順序的集合,則必須改用LinkedHashSet (請注意,這不是排序的集合)。

  Set<Integer> mySet = new LinkedHashSet<>(List.of(1, 2, 3, 4));

您不能使用Set.of 這為您提供了一個不變的Set而不是可以訂購的Set

唯一的方法是構建TreeSet (如果對象為Comparable則可以排序,或者可以指定自己的Comparator )。

Set<Integer> mySet = new TreeSet<>(Arrays.asList(1, 2, 3, 4));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM