java8新特性stream,两个 list<对象> 进行合并
两个查询到的集合是:
list1的id 和list2的 userId 字段相等
想要的结果,包含 list1的 id,name 和list2的 userId,achievement1,achievement2
resultList = list1.stream().map(l1 -> list2.stream().filter( l2 -> Objects.equals(l1.getId(),l2.getUserId()) ).findFirst().map( l2 -> { l2.setId(l1.getId()); l2.setName(l1.getName()); return l2; }).collect(Collectors.toList());
解释:
判断是否相等,相对就进入赋值
Objects.equals(l1.getId(),l2.getUserId())
为哪个list赋的值可以返回当前list
l2.setId(l1.getId()); l2.setName(l1.getName()); return l2;
如果想要的结果是list1的话
list1.stream().map(l1 -> list2.stream().filter( l2 -> Objects.equals(l1.getId(),l2.getUserId()) ).findFirst().map( l2 -> { l1.setAchievement1(l2.getAchievement1()); l1.setAchievement2(l2.getAchievement2()); return l1; }).collect(Collectors.toList());
执行之后,list1中的数据语句被改变了
下一篇:
Java配置环境变量(Windows)