java – 如何将此源代码转换为lambda?

它由列表对象中的地图组成.我尝试通过循环语句比较它们​​来匹配具有相同id的列表.我怎样才能转换为lambda?

List<Map<String, String>> combineList = new ArrayList<>(); // Temp List
for(Map titleMap : titleList) { // Name List
   for(Map codeMap : codeList) { // Age List
      if(titleMap.get("ID").equals(codeMap.get("ID"))) { // compare Id
         Map<String,String> tempMap = new HashMap<>();
          tempMap.put("ID", titleMap.get("ID"));
          tempMap.put("NAME", titleMap.get("NAME"));
          tempMap.put("AGE", codeMap.get("AGE"));
          combineList.add(tempMap);
      }
   }
}

最佳答案 你已经以有效的方式做到了.因此,如果您希望您可以更改相同的代码,只需使用stream().forEach,或者如果想要使用流更多,请执行以下操作:

titleList.stream()
        .forEach(titleMap ->
            combineList.addAll(
                codeList.stream()
                    .filter(codeMap -> titleMap.get("ID").equals(codeMap.get("ID")))
                    .map(codeMap -> {
                      Map<String, Object> tempMap = new HashMap<>();
                      tempMap.put("ID", titleMap.get("ID"));
                      tempMap.put("NAME", titleMap.get("NAME"));
                      tempMap.put("ID", codeMap.get("ID"));
                      tempMap.put("AGE", codeMap.get("AGE"));
                      return tempMap;
                    })
                    .collect(Collectors.toList())
            )
        );

请注意,您必须每次都从codeList过滤,因为您的条件是这样的.尝试使用类来代替Map以提高效率,清洁和有效.

点赞