java 8中Comparator.comparing和reversed

687 阅读1分钟

java8之后可以对列表按照某个字段进行排序
代码如下:

 res.stream().sorted(Comparator.comparing(RuralEnterpriseInfo::getEndTime).reversed()).collect(Collectors.toList());

然后我们知道

RuralEnterpriseInfo::getEndTime

可以用如下方式代替

p -> p.getEndTime()

然后修改之后代码如下

res.stream().sorted(Comparator.comparing( p -> p.getEndTime()).reversed()).collect(Collectors.toList());

这个时候代码是报错的
在这里插入图片描述
然而我们去掉reversed 不进行逆序排 代码就不报错
在这里插入图片描述
通过查看comparing方法和reversed方法我们知道reversed返回一个泛型,而comparing需要一个function也就是这里需要一个对象,所以我们转换一下

res.stream().sorted(Comparator.comparing( (RuralEnterpriseInfo p) -> p.getEndTime()).reversed()).collect(Collectors.toList());

如此即可