[英]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));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.