lambda

过滤某个数据可以使用
1.List<Map<String, Object>> filerRows = rows.stream().filter(e -> e.get("status").toString().equals("1")).collect(Collectors.toList());
2.map提取某字段和对象进行加工后写法
String orgCodeStr = Optional.ofNullable(subAcctList).orElseGet(Collections::emptyList)
                .stream().map(FasSubAcct::getOrgCode).collect(Collectors.joining(","));
String orgCodeStr1 = Optional.ofNullable(subAcctList).orElseGet(Collections::emptyList)
                .stream().map(temp->{
                    String orgCode = temp.getOrgCode();
                    //商户名称和商户号之间做转换
                    String str = getLedgerCustCodeBySubAcctList(orgCode);
                    return str;
                        }).collect(Collectors.joining(","));
        //商户名称合成一个字符串
        System.out.println(orgCodeStr);
        //转成商户号之后合成一个字符串
        System.out.println(orgCodeStr1);
//转成orgCode为key,每个对象为value
Map<String, FasSubAcct> map = Optional.ofNullable(subAcctList).orElseGet(Collections::emptyList)
    .stream().collect(Collectors.toMap(s -> s.getOrgCode(), Function.identity()));

COMPENSATE_KUAISHENG,WDLOAN_SHANGHAI,HONGTA
123456,123456789,4656464646
{HONGTA={"orgCode":"HONGTA","value":"8000"}, COMPENSATE_KUAISHENG={"orgCode":"COMPENSATE_KUAISHENG","value":"5000"}, WDLOAN_SHANGHAI={"orgCode":"WDLOAN_SHANGHAI","value":"10000"}}

下面这个场景用的也很多,List里面的a和b相等就把c属性相加,报表里面某些属性相等则求和等场景,可以先根据需要去重的多个字段进行分组,再计算返回
for (Map.Entry<String, List<DTO>> entry : beanList.parallelStream().collect(groupingBy(o -> (o.getId() + o.geCode()), Collectors.toList())).entrySet()) {
if(bitMap.contains(entry.getKey()) && entry.getValue().size()==1){
objects.add(entry.getValue().get(0));
}else{
List<DTO> transfer = entry.getValue();
transfer.stream().reduce((a, b) -> DTO.builder()
.irrCd(a.getIrrCd())
.id(a.getId())
.tm(a.getCode())
.build())
.ifPresent(objects::add);
}
}
https://blog.51cto.com/u_16099273/6790794

//两个list合并再根据某属性进行去重,注意list不能为空

List<EvidenceInfo> temList = Stream.concat(swanStoneEvidenceList.stream(), combineFileList.stream()).collect(Collectors.toList());
List<EvidenceInfo> collect = temList.stream().collect(Collectors.toMap(EvidenceInfo::getFileType, Function.identity(), (existing, replacement) -> existing)).values().stream().collect(Collectors.toList());
posted @ 2022-08-23 11:42  宁山  阅读(12)  评论(0编辑  收藏  举报