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 对象去重的主要内容,如果未能解决你的问题,请参考以下文章

java8 使用lamda表达式实现对象set方法的链式操作

java笔记:Lamda 表达式

lambda去重

Lamda Expression

java8 List根据元素对象属性去重

java8 List根据元素对象属性去重