在开发导出报表的时候,搜索了两个list集合,形式如下:


因为不能同时满足两种情况的搜索,所以只能分开查找数据,再将相同id对应的对象数据合并。
最终展示为下表所示的对象集合。
| id | name | questionNum | pointNum | score |
| 4799 | 主次干道、商业大街 | 187 | 13 | 1121 |
代码如下:
resultList = list1.stream().map(m -> {
list2.stream().filter(m2-> Objects.equals(m.getTypeId(),m2.getTypeId())).forEach(m2-> {
m.setScores(m2.getScores());
}).collect(Collectors.toList());
stream循环匹配合并list,根据共同字段合并集合
public static void main(String[] args) {
List memberInformationDomainList = Lists.newArrayList();
List memberInfoNumDomainList = Lists.newArrayList();
MemberInformationDomain informationDomain = new MemberInformationDomain();
informationDomain.setMemberId(1L);
informationDomain.setNickname("罗");
MemberInformationDomain informationDomain1 = new MemberInformationDomain();
informationDomain1.setMemberId(2L);
informationDomain1.setNickname("罗");
memberInformationDomainList.add(informationDomain);
memberInformationDomainList.add(informationDomain1);
MemberInfoNumDomain numDomain = new MemberInfoNumDomain();
numDomain.setMemberId(1L);
numDomain.setAccountMergeNum(2);
numDomain.setEntityCardNum(2);
numDomain.setHoldCardNum(4);
numDomain.setVirtualCardNum(6);
numDomain.setJointlyCardNum(1);
memberInfoNumDomainList.add(numDomain);
memberInformationDomainList.stream().forEach(infoList -> {
memberInfoNumDomainList.stream().forEach(numList -> {
if (infoList.getMemberId().equals(numList.getMemberId())) {
infoList.setAccountMergeNum(numList.getAccountMergeNum());
infoList.setHoldCardNum(numList.getHoldCardNum());
infoList.setEntityCardNum(numList.getEntityCardNum());
infoList.setJointlyCardNum(numList.getJointlyCardNum());
infoList.setVirtualCardNum(numList.getVirtualCardNum());
System.out.println("得到的集合对象为:" + memberInformationDomainList);
