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());