java8 list中根据对象多属性去重
程序员文章站
2022-06-07 13:14:40
...
项目需求,需要使用 java8 实现 sql 里的 order 排序。使用 Comparator.comparing 和 thenComparing 实现
List<CnlEntity> shipList = new ArrayList<>();
List<CnlEntity> shipListTmp = new ArrayList<>();
Comparator<CnlEntity> byCustCd = Comparator.comparing(CnlEntity::getCustCd, Comparator.nullsLast(String::compareTo));
Comparator<CnlEntity> bySsd = Comparator.comparing(CnlEntity::getSsd, Comparator.nullsLast(Date::compareTo));
Comparator<CnlEntity> byGlobalNo = Comparator.comparing(e -> {
if (StringUtils.isNotEmpty(e.getGlobalNo())) {
if (e.getGlobalNo().length() > 6) {
return e.getGlobalNo().substring(e.getGlobalNo().length() -6);
} else {
return e.getGlobalNo();
}
} else {
return "";
}
});
shipList = shipListTmp.stream().filter(entity -> StringUtils.equals(entity.getSubsidiaryCd(), "MJP"))
.sorted(byCustCd.thenComparing(bySsd).thenComparing(byGlobalNo))
.collect(Collectors.toList());
Comparator.nullsLast(String::compareTo) 可以防止 null 指针异常,遇到空数据排到最后。
推荐阅读
-
Java8 实现stream将对象集合list中抽取属性集合转化为map或list
-
java中List对象列表实现去重或取出及排序的方法
-
Java8利用stream的distinct()方法对list集合中的对象去重和抽取属性去重
-
Java8利用stream的distinct()方法对list集合中的对象去重和抽取属性去重
-
C#NPOI.RabbitMQ.EF.Attribute.HttpRuntime.Cache.AD域.List
根据指定字段去重.前端JQuery.Cache.I18N(多语言).data-xx(自定义属性) -
List用法:根据对象属性排序、筛选、去重
-
JS实现数组简单去重及数组根据对象中的元素去重操作示例
-
Java8使用stream实现list中对象属性的合并(去重并求和)
-
C# List 根据对象属性去重的四种方法对比
-
关于java的List集合对象去重及按属性去重的8种方法