Lambda中的Sorted()无法按预期工作-Java 8

时间:2019-12-03 05:56:30

标签: java sorting lambda java-8

在学习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);
        }
      }

请帮助我了解这种行为。

1 个答案:

答案 0 :(得分:2)

您应该收集到Collection,以保留HashSet的默认实现中角色toSet所没有的顺序:

.collect(Collectors.toCollection(LinkedHashSet::new))