请参见下面的代码,在第四行中,将lambda表达式放在.sort()方法中,它可以很好地工作。
使用Arrays.sort()的第五行将报告一个错误。我想知道两者之间的区别在哪里。以及如何在Arrays.sort()中正确使用lambda表达式
var strs = new ArrayList<String>();
strs.add("AA");
strs.add("BB");
strs.sort((a,b) -> b.compareTo(a)); // OK
// Arrays.sort(strs, (a, b) -> b.compareTo(a) ); // CAN NOT COMPILE java: no suitable method found for sort...发布于 2022-02-07 21:17:22
数组和列表是不同的,因此不能将一个实例传递给期望另一个的方法。但是List接口有一个接受Comparator的sort()方法。要对一个列表进行排序,可以这样做。字符串实现Comparable接口,它们的自然顺序正在上升。因此,只需指定一个反向顺序的Comparator进行比较。
var strs = new ArrayList<String>();
strs.add("AA");
strs.add("BB");
strs.sort(Comparator.reverseOrder());
strs.forEach(System.out::println);版画
BB
AA发布于 2022-02-07 21:20:17
就像duncg提到的那样:
Object[] array = strs.toArray();
Arrays.sort(array, (a, b) -> ((String) b).compareTo((String)a) );https://stackoverflow.com/questions/71025357
复制相似问题