Java Lamda表达式List 对象去重
Posted 洛阳泰山
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java Lamda表达式List 对象去重相关的知识,希望对你有一定的参考价值。
代码,核心是倒数第二行代码,其他事业务代码,业务逻辑 是查询数据进度节点,先取最新开始节点,然后查询, 数据库时间比最新开始节点大的数据,得到最新的数据进度节点列表.
public List<DataScheduleEntity> listByClazzId(Long clazzId)
LambdaQueryWrapper<DataScheduleEntity> wrapper=new LambdaQueryWrapper();
wrapper.eq(DataScheduleEntity::getClazzId,clazzId);
wrapper.eq(DataScheduleEntity::getState,DataScheduleEnum.QUEUE_UP.getState());
wrapper.orderByAsc(DataScheduleEntity::getCreateTime);
wrapper.last("LIMIT 1");
DataScheduleEntity entity=getOne(wrapper);
LambdaQueryWrapper<DataScheduleEntity> wrapper1=new LambdaQueryWrapper();
wrapper1.eq(DataScheduleEntity::getClazzId,clazzId);
wrapper1.ge(DataScheduleEntity::getCreateTime,entity.getCreateTime());
wrapper1.orderByAsc(DataScheduleEntity::getState);
List<DataScheduleEntity> list= list(wrapper1);
list = list.stream().filter(distinctByKey(DataScheduleEntity::getState)).collect(Collectors.toList());
return list;
distinctByKey方法
private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor)
Set<Object> set = ConcurrentHashMap.newKeySet();
return t -> set.add(keyExtractor.apply(t));
以上是关于Java Lamda表达式List 对象去重的主要内容,如果未能解决你的问题,请参考以下文章