收藏家。设置更改顺序[重复]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

我在String数组的流处理中看到了一个有趣的行为。

我正在做这样的事情

String s =  "1_2_string";
String[] arr = s.split("_");
final Set<String> CAST_PATTERN = Set.of("string", "string2");
Arrays.stream(arr)
        .filter(id -> !CAST_PATTERN.contains(id))
        .map(Long::valueOf)
        .collect(Collectors.toSet());

预期结果应该是一个集合[1,2],但实际结果是[2,1] Collectors.toSet()创建一个HashSet而不是SortedSet,所以它不应该弄乱数据的顺序。不知道为什么!!

java collections
1个回答
1
投票

通常,Set对迭代顺序没有任何保证。

如果您需要定义的订单,可以使用Collectors.toCollection(TreeSet::new)(对于元素的自然顺序)或Collectors.toCollection(LinkedHashSet::new)(对于插入顺序)。

© www.soinside.com 2019 - 2024. All rights reserved.