java以函数样式对集合进行排序

vd2z7a6w  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(399)

这个问题在这里已经有答案了

在java中使用stream.sorted()对列表进行排序(7个答案)
上个月关门了。
我正在学习java,在尝试对arraylist中的对象进行排序时,我发现了这种方法。

ArrayList<String> al = new ArrayList<String>(); 
al.add("Friends"); 
al.add("Dear"); 
al.add("Is"); 
al.add("Superb"); 

Collections.sort(al); 

System.out.println("List after the use of" + 
                       " Collection.sort() :\n" + al);

这种方法很有效,但由于我来自函数式编程背景,我想知道用函数式对java中的集合进行排序的最优雅的方法是什么(因此,返回一个新集合,而不是修改原始集合)。

bq3bfh9z

bq3bfh9z1#

这与collections.sort()不同,collections.sort()对参数引用进行排序。在这种情况下,您只需获得一个排序流,最终需要收集并分配给另一个变量:

List result = al.stream().sorted((o1, o2) -> o1.compareTo(o2)).collect(Collectors.toList());

或:

ArrayList<String> al = new ArrayList<String>(); 
al.add("Friends"); 
al.add("Dear"); 
al.add("Is"); 
al.add("Superb"); 

System.out.println(al);
al.sort((o1, o2) -> o1.compareTo(o2));
System.out.println(al);

相关问题