我在字符串数组的流处理中看到了一个有趣的行为。我正在做这样的事情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 回答
婷婷同学_
TA贡献1844条经验 获得超8个赞
通常,Set 对迭代顺序没有任何保证。
如果需要定义顺序,可以使用Collectors.toCollection(TreeSet::new)
(用于元素的自然顺序)或Collectors.toCollection(LinkedHashSet::new)
(用于插入顺序)。
添加回答
举报
0/150
提交
取消