Java 8 字符串的流排序列表

2022-09-04 06:59:55

我正在流上调用排序方法。Java文档说:

“Sorted 方法返回一个流,该流由此流的元素组成,根据自然顺序排序。

但是当我运行下面的代码时:

List<String> list = new ArrayList<String>();
list.add("b");
list.add("a");
list.add("z");
list.add("p");
list.stream().sorted();
System.out.println(list);

我正在获取输出

[b, a, z, p]

为什么我没有得到自然排序的输出?


答案 1

更改此项

list.stream().sorted();
System.out.println(list);

到类似的东西

list.stream().sorted().forEachOrdered(System.out::println);

您的方法是 println the(而不是已排序的流)。或者(或另外),您可以缩短初始化例程并重新收集等listList

List<String> list = new ArrayList<>(Arrays.asList("b","a","z","p"));
list = list.stream().sorted().collect(Collectors.toList());
System.out.println(list);

哪些输出(如您所料)

[a, b, p, z]

答案 2

您应该收集排序的结果,然后将其分配给您的列表。

    List<String> list = new ArrayList<String>();
    list.add("b");
    list.add("a");
    list.add("z");
    list.add("p");
    list = list.stream().sorted().collect(Collectors.toList());
    System.out.println(list);

推荐