为了账号安全,请及时绑定邮箱和手机立即绑定

Collectors.toSet 更改顺序

Collectors.toSet 更改顺序

慕桂英546537 2022-06-30 19:08:31
我在字符串数组的流处理中看到了一个有趣的行为。我正在做这样的事情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)(用于插入顺序)。


查看完整回答
反对 回复 2022-06-30
  • 1 回答
  • 0 关注
  • 596 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信