这个问题在这里已经有答案了:
hashset的迭代顺序(9个答案)
两年前关门了。
我在字符串数组的流处理中看到了一个有趣的行为。
我在做这样的事
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,因此它不应该扰乱数据的顺序。不知道为什么!!
1条答案
按热度按时间rqdpfwrv1#
通常,集合对迭代顺序没有任何保证。
如果需要定义的订单,可以使用
Collectors.toCollection(TreeSet::new)
(元素的自然顺序)或Collectors.toCollection(LinkedHashSet::new)
(用于插入顺序)。