jdk1.8 lambda

原创
2018/12/14 15:03
阅读数 1.7K

原因:因为Stream提供的distinct()方法只能去除重复的对象,无法根据指定的对象属性进行去重,可以应付简单场景。

解决方案:

//去重,共同信息保存到bizPledgeSupplierVOs里
bizPledgeSupplierAgentBos.stream().filter( distinctByKey(o -> o.getId()) ).forEach( p ->{
        if(!StringUtil.isBlank( p.getProcessPerson() )){
            BizPledgeSupplierVO vo = new BizPledgeSupplierVO();
            BeanUtils.copyProperties( p , vo );
            bizPledgeSupplierVOs.add( vo );
        }
    }
);

private <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) { Map<Object, Boolean> seen = new ConcurrentHashMap<>(); return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null; }

对象list转map
Map<String, PledgeManageVindicateBO> vindicateMap = vindicateBOS.stream().
        collect(Collectors.toMap(PledgeManageVindicateBO::getCode, obj -> obj, (k1, k2) -> k1));

 

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部