兩個list
第一個list1:
[{id:1,value:v1},{id:2,value:v2},{id:3,value:v3},{id:4,value:v4}]
第二個list2:
[{id:1,name:name1},{id:2,name:name2}]
想要的是:[{id:1,value:v1,name:name1},{id:2,value:v2,name:name2},{id:3,value:v3,name:0},{id:4,value:v4,name:0}]
實現:
List<Map<String, Object>> resultList1 = list1.stream().map(m->{
m.put("name",0)
list2.stream().filter(m2->Objects.equals(m.get("id"), m2.get("id"))).forEach(s->m.put("name",s.get("name")));
return m;
}).collect(Collectors.toList());
resultList1.stream().forEach(s-> System.out.println(s));
說明:
stream():把源數據轉換為流
list1.stream().map:用於映射每個元素到對應的結果,類似與for(Map item: list1) m對應 item
filter():filter 方法用於通過設置的條件過濾出元素。