描述:
比如一個List集合中List<對象1>,該對象1包含A、B和C列
另外一個List集合中List<對象2>,該對象2包含A、D列
問題:需要將兩個List合成List<對象3>返回,該對象3包含A、B、C、D列
解決:1.需要判斷出哪個List集合的數據比較少,例如第二個集合數據少,可以執行:
Map<String,User2> map2 = list2.stream().collect(Collectors.toMap(User2::getUserCode,item->{
return item;
},(v1,v2)->(v2)));
或者使用:
Map<String,User2> map = Maps.uniqueIndex(list2, new Function<User2, String>() {
@Override
public String apply(User2 user2) {
return user2.getUserCode();
}
});
之後循環遍歷第一個集合,因爲第一個集合數據多,防止不能展示全部執行:
List<User3> resultList = Lists.newArrayList();
for(User1 user1: list1){
User2 user2= map.get(user1.getUserCode());
User3 user3= new User3();
//開始設置數據,取出user2和user1的數據分別往user3中設置
if (Objects.nonNull(user2)){
// 因爲D列是user2的數據,單獨處理
user3.setD(user2.getD());
}
// 不論user2有沒有數據,user1的都是取出數據
user3.setA(user1.getA());
user3.setB(user1.getB());
user3.setC(user1.getC());
resultList.add(user3);
}