【发布时间】:2019-02-22 12:00:50
【问题描述】:
我在字符串数组的流处理中看到了一个有趣的行为。
我正在做这样的事情
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