使用场景,有两个List<Map<String,Object>>集合,第一个集合的所有元素都是需要保留的。

第一个集合的值为:

text
1 2 3 4 5 6 7 8
{name=张三丰1, id=1}
{name=张三丰2, id=2}
{name=张三丰3, id=3}
{name=张三丰4, id=4}
{name=张三丰5, id=5}
{name=张三丰6, id=6}
{name=张三丰7, id=7}
{name=张三丰8, id=8}

第二个集合的值为:

text
1 2 3 4
{grade=61, id=1}
{grade=62, id=2}
{grade=63, id=3}
{grade=64, id=4}

需要根据两个集合中id值相同,就把第二个集合中的grade值赋给第一个集合,如果不匹配,默认grade值为0

结果是这样:

text
1 2 3 4 5 6 7 8
{grade=61, name=张三丰1, id=1}
{grade=62, name=张三丰2, id=2}
{grade=63, name=张三丰3, id=3}
{grade=64, name=张三丰4, id=4}
{grade=0, name=张三丰5, id=5}
{grade=0, name=张三丰6, id=6}
{grade=0, name=张三丰7, id=7}
{grade=0, name=张三丰8, id=8}

具体实现代码:

text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
   @Test
   public void demo01(){
      List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
      for (int i=1;i<9;i++){
         Map<String,Object> map = new HashMap<>();
         map.put("id",i);
         map.put("name","张三丰"+i);
         list.add(map);
      }
      Stream<Map<String, Object>> s1 = list.stream();
      list.stream().forEach(map-> System.out.println(map));

      List<Map<String,Object>> list2 = new ArrayList<Map<String,Object>>();
      for (int i=1;i<5;i++){
         Map<String,Object> map2 = new HashMap<>();
         map2.put("id",i);
         map2.put("grade",i+60);
         list2.add(map2);
      }
      list2.stream().forEach(s-> System.out.println(s));
/**
 *  List<Map<Object, Object>> resultList = oneList.stream().map(map -> twoList.stream()
 *             .filter(m -> Objects.equals(m.get("id"), map.get("id")))
 *             .findFirst().map(m -> {
 *                map.putAll(m);
 *                map.put("grade",90);
 *                return map;
 *             }).orElse(null))
         *             .filter(Objects::nonNull).collect(Collectors.toList());
 */
     /* List<Map<String, Object>> resultList2 = list.stream().map(m->{
               m.put("grade",0);
               for (int i=0;i<list2.size();i++){
                  if(m.get("id").equals(list2.get(i).get("id"))){
                     m.put("grade",list2.get(i).get("grade"));
                     break;
                  }
               }
               return m;
            }).collect(Collectors.toList());*/
      List<Map<String, Object>> resultList2 = list.stream().map(m->{
         m.put("grade",0);
         list2.stream().filter(m2->Objects.equals(m.get("id"), m2.get("id"))).forEach(s-> m.put("grade",s.get("grade")));
         return m;
      }).collect(Collectors.toList());
      resultList2.stream().forEach(s-> System.out.println(s));
   }

看到最后,喜欢的小伙伴就不要吝啬的帮忙扫码关注一下了,谢谢。

微信扫一扫:关注我个人订阅号“猿小飞”,更多精彩文章在这里及时发布:

原文地址:https://blog.csdn.net/u011442726/article/details/96770773?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168474999716782427485144%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168474999716782427485144&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-8-96770773-null-null.142^v87^insert_down1,239^v2^insert_chatgpt&utm_term=java%E4%BC%98%E5%8C%96