Java處理兩個List集合中對象數據合併處理數據後爲同一個List集合對象

描述:

比如一個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);
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章