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如何操作呢
2 回答

慕碼人2483693
TA貢獻1860條經(jīng)驗 獲得超9個贊
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
TA貢獻1786條經(jīng)驗 獲得超11個贊
是lambda表達式吧?
map1.forEach((k1,v1)->{
map2.forEach((k2,v2)->{
//todo
})
})
添加回答
舉報
0/150
提交
取消