首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java lambda表达式中的排序。.sort()和Arrays.sort()之间的区别

java lambda表达式中的排序。.sort()和Arrays.sort()之间的区别
EN

Stack Overflow用户
提问于 2022-02-07 21:02:17
回答 2查看 176关注 0票数 0

请参见下面的代码,在第四行中,将lambda表达式放在.sort()方法中,它可以很好地工作。

使用Arrays.sort()的第五行将报告一个错误。我想知道两者之间的区别在哪里。以及如何在Arrays.sort()中正确使用lambda表达式

代码语言:javascript
复制
    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...

相关问题:using Arrays.sort with Lambda

EN

回答 2

Stack Overflow用户

发布于 2022-02-07 21:17:22

数组和列表是不同的,因此不能将一个实例传递给期望另一个的方法。但是List接口有一个接受Comparatorsort()方法。要对一个列表进行排序,可以这样做。字符串实现Comparable接口,它们的自然顺序正在上升。因此,只需指定一个反向顺序的Comparator进行比较。

代码语言:javascript
复制
var strs = new ArrayList<String>();
   strs.add("AA");
   strs.add("BB");

strs.sort(Comparator.reverseOrder());

strs.forEach(System.out::println);

版画

代码语言:javascript
复制
BB
AA
票数 0
EN

Stack Overflow用户

发布于 2022-02-07 21:20:17

就像duncg提到的那样:

代码语言:javascript
复制
Object[] array = strs.toArray();
Arrays.sort(array, (a, b) ->  ((String) b).compareTo((String)a) );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71025357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档