在学习lambda的同时,我发现排序方法无法按预期工作。
以下程序将[1, 33, 2, 4, 5, 11]
作为输出,但是我希望输出排序。
奇怪的是,当我将[33, 2, 1, 4, 5, 11]
替换为[ 3, 1,2, 4, 5]
时,一切正常,并且得到了预期的排序输出。
public class Test {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(33, 2, 1, 4, 5, 11);
Set<Integer> set = list.stream().sorted().collect(Collectors.toSet());
System.out.println(set);
}
}
请帮助我了解这种行为。
答案 0 :(得分:2)
您应该收集到Collection
,以保留HashSet
的默认实现中角色toSet
所没有的顺序:
.collect(Collectors.toCollection(LinkedHashSet::new))