当前位置: 代码迷 >> J2SE >> List<Map<String, Integer>> 遍历相加,该如何处理
  详细解决方案

List<Map<String, Integer>> 遍历相加,该如何处理

热度:37   发布时间:2016-04-23 20:42:51.0
List<Map<String, Integer>> 遍历相加
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));
  相关解决方案