使用Java8的Stream对两个 List 遍历匹配数据的优化处理

 List<Map<String,Object>> map1 = null;
  List<Map<String,Object>> map2 = null;
  for (Map<String, Object> x : map1) {
       for (Map<String, Object> y : map2) {
            if (x.get("id").equals(y.get("id"))){
                 //todo
            }
       }
  }

类似这种用java8的Stream如何操作呢

慕森王
浏览 14012回答 2
2回答

慕码人2483693

List<Map<Object, Object>> list1 = new ArrayList<>(); List<Map<Object, Object>> list2 = new ArrayList<>(); list1.stream() .filter(map -> list2.stream().anyMatch(map1 -> map.get("id").equals(map1.get("id")))) .forEach(map -> { // to do sth }); 你试试这个呢 List<Map<Object, Object>> list3 = list1.stream() .map(map -> list2.stream() .filter(m -> Objects.equals(m.get("id"), map.get("id"))) .findFirst().map(m -> { map.putAll(m); return map; }).orElse(null)) .filter(Objects::nonNull).collect(Collectors.toList());

Qyouu

是lambda表达式吧?map1.forEach((k1,v1)->{ map2.forEach((k2,v2)->{ //todo }) })
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java