Java 8 流排序字符串列表

新手上路,请多包涵

我在流上调用 sorted 方法。 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]

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

原文由 saurabh suman 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 541
1 个回答

改变这个

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

到类似的东西

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

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

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]

原文由 Elliott Frisch 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题