List<Map<String, Integer>> list1 = [{d=2, a=3, c=1, b=1}, {d=21, a=34, c=12, b=13}]
想让 d 、a、c、d 遍历 相加后 再放到新的 List<Map<String, Integer>> list2 里
请java高手完整代码给出来
------解决方案--------------------
public static Map<String, Integer> add(List<Map<String, Integer>> list) {
Map<String, Integer> map = new HashMap<String, Integer>();
for (Map<String, Integer> maptemp : list) {
for (Entry<String, Integer> entry : maptemp.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
if (map.containsKey(key)) {
map.put(key, map.get(key) + value);
} else {
map.put(key, value);
}
}
}
return map;
}
------解决方案--------------------
import java.util.*;
public class IteratorTest {
public static void main(final String[] args) {
List<Map<String, Integer>> list1 = new ArrayList<>();
list1.add(new HashMap() {
{
put("d", 2);
put("a", 3);
put("c", 1);
put("b", 1);
}
});
list1.add(new HashMap() {
{
put("d", 21);
put("a", 34);
put("c", 12);
put("b", 13);
}
});
List<Map<String, Integer>> list2 = new ArrayList<>();
list2.add(new HashMap() {
{
put("d", 0);
put("a", 0);
put("c", 0);
put("b", 0);
}
});
add(list1, list2);
print("list1:", list1);
print("list2:", list2);
}
public static void add(
List<Map<String, Integer>> list1,
List<Map<String, Integer>> list2) {
if (list1 == null
------解决方案--------------------
list2 == null) {
return;
}
list1.stream().forEach((list1Element) -> {
list1Element.keySet().stream().forEach((list1ElementMapKey) -> {
if (list2.get(0).containsKey(list1ElementMapKey)) {
list2.get(0).put(list1ElementMapKey,
list1Element.get(list1ElementMapKey)
+ list2.get(0).get(list1ElementMapKey));