我正在尝试通过我自己的比较器对字符串列表进行排序。我看到了下面的开发人员列表模板。
//lambda
listDevs.sort((Developer o1, Developer o2)->o1.getAge()-o2.getAge());
我的代码:(这给了我编译错误)
List<String> s = new ArrayList<>();
Collections.sort(s, (String a, String b)-> {
return a.length() > b.length()
});
此代码未编译。有人可以帮我看看我在做什么吗?
最佳答案
Arrays.sort
用于排序 Arrays
而不是 Collection
对象,使用 Collections.sort对 ArrayList
Collections.sort(s,(a,b)->a.length()-b.length());
对应的lambda表达式错误 (String a,String b)-> a.length() > b.length()
返回 boolean 值。在哪里Comparator.compare应该返回 int
值。参数的类型也可以显式声明,也可以从上下文中推断出来。
int compare(T o1, T o2)
您还可以使用 List.sort
s.sort((a,b)->a.length()-b.length());
关于java - 我如何通过 lambda 创建字符串比较器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57125556/