Java 8 lambda : Comparator

标签 java lambda java-8 comparator

我想用 Lambda 对列表进行排序:

List<Message> messagesByDeviceType = new ArrayList<Message>();      
messagesByDeviceType.sort((Message o1, Message o2)->o1.getTime()-o2.getTime());

但是我得到了这个编译错误:

 Multiple markers at this line
    - Type mismatch: cannot convert from long to int
    - The method sort(Comparator<? super Message>) in the type List<Message> is not applicable for the arguments ((Message o1, Message o2) 
     -> {})

最佳答案

Comparator#compareTo 返回一个 int;而 getTime 显然是 long.

这样写会更好:

.sort(Comparator.comparingLong(Message::getTime))

关于Java 8 lambda : Comparator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44225896/

相关文章:

java - 如何提高读取 tar.gz 文件夹中文件的性能?

c++11 信号系统

java - 在 Java 中,当值为 null 时,收集器映射抛出 NullPointerException,为什么?

c++ - 如何使用 lambda,返回一个 bool 作为参数

java - 从 Nullable 对象创建 Stream 的惯用方法

java - 如何使用 Lambda 将字符串数组转换为整数数组?

java - 检查线是否以点开头,然后将其删除

java - 尝试获取泛型类型参数时出现 ClassCastException

java - Android:如何使用JobService的JobFinished

node.js - AWS DynamoDb 查询表