java - 我如何通过 lambda 创建字符串比较器?

标签 java string lambda java-8 comparator

我正在尝试通过我自己的比较器对字符串列表进行排序。我看到了下面的开发人员列表模板。

//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.sortArrayList

进行排序
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/

相关文章:

python - 从字符串**正确地**创建一个 lambda 函数

java - 如何识别两个 HashMap 是否包含具有相同 ID 的对象

python - pandas apply upper() 分别作用于两个字符串列中的每一个,但不能一起作用

java.sql.SQLIntegrityConstraintViolationException : ORA-00001: unique constraint while running Oracle functions

java - 我应该使用什么数据结构来存储java中的二进制代码?

java - 如何为所有 Activity 建立一个共享线程?

java - 将文本字符串中的字符移动指定数量的位置

Python在字符串中查找Python字符串

java - 找不到 ID 水壶

java - 如何为 Apache Camel 路由的 Split 准备 Executor 服务,org.apache.camel.spi.ThreadPoolProfile 与 java.util.concurrent.ExecutorService