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

标签 java lambda java-8

它由列表对象中的 map 组成。我尝试通过循环语句比较它们​​来匹配具有相同 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 或者如果想更多地使用 streams 做如下:

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 以提高效率、清洁度和效果。

关于java - 如何将此源代码转换为 lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54340344/

相关文章:

java - SwingWorker 中的取消异常

Python 通过多个键使用 lambda 排序列表或字典

Java-8:如何在忽略区分大小写的情况下使用 Map.Entry#comparingByValue 对 Map(基于值)进行排序?

java - 比较 VS <?扩展比较>

java - 使用 LocalDate 类型参数发送请求

java - 数组中的最小值一直打印 0? Java(但 .txt 文件中没有零作为数字)

java - XMLSocketReceiver 和 SocketReceiver 如何工作?

python - Pandas 群体内的变量转移

c# - Unity3D 协程和 lambda 回调,安全

Java CompletableFuture get 方法