它由列表对象中的 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/