我是靠谱客的博主 洁净蜗牛,最近开发中收集的这篇文章主要介绍List中将 Map 某key值相等的累加,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

List中将 Map 某key值相等的累加

public static void main(String[] args){
        List<Map<String,Object>> list1 = new ArrayList<Map<String,Object>>();
        Map<String,Object> map1 = new HashMap<String,Object>();
        Map<String,Object> map2 = new HashMap<String,Object>();
        Map<String,Object> map3 = new HashMap<String,Object>();
        map1.put("张三", new Integer(92));
        map2.put("李四", new Integer(85));
        map3.put("张三", new Integer(90));
        list1.add(map1);
        list1.add(map2);
        list1.add(map3);
         
        Map<String,Object> mapAll = new HashMap<String,Object>();
        for(Map<String,Object> map:list1){
            for(Map.Entry<String, Object> entry:map.entrySet()){
                String name = entry.getKey();
                Object score = entry.getValue();
                Object scoreAll = mapAll.get(entry.getKey());
                if(scoreAll == null){
                    mapAll.put(name, score);
                }else{
                    scoreAll = new Integer((((Integer)scoreAll).intValue() + ((Integer)score).intValue()));
                    mapAll.put(name, scoreAll);
                }
            }
        }
         
        for(Map.Entry<String, Object> entry:mapAll.entrySet()){
            //如果需要将map再做list,在这里处理
            System.out.println(entry.getKey() + "," + entry.getValue());
        }
         
    }


JSONArray转Map的三种实现方式

JSONArray数据

[
    {
        "flagType": 1,
        "flagIcon": "1.jpg"
    },
    {
        "flagType": 2,
        "flagIcon": "2.jpg"
    }
]

要转成目标数据

{
    1:"1.jpg",
    2:"2.jpg"
}

第一种

JSONArray jsonArray= new JSONArray();
//填充初始数据,此处过程省略
List<JSONObject> jsonObjectList = jsonArray.toJavaList(JSONObject.class);
Map<Integer, String> map = jsonObjectList.stream().filter(Objects::nonNull).collect(Collectors.toMap(item -> item.getInteger("flagType"), item -> item.getString("flagIcon")));

第二种

JSONArray jsonArray= new JSONArray();
//填充初始数据,此处过程省略
Map<Integer, String> map = jsonArray.stream().filter(Objects::nonNull)
                .collect(Collectors.toMap(
                        object -> {
                            JSONObject item = (JSONObject) object;
                            return item.getInteger("flagType");
                        },
                        object -> {
                            JSONObject item = (JSONObject) object;
                            return item.getString("flagIcon");
                        }
                ));

第三种

Map<Integer, String> flagIconMap = new HashMap<>();

JSONArray jsonArray= new JSONArray();
//填充初始数据,此处过程省略
if (jsonArray != null && !jsonArray.isEmpty()) {
	jsonArray.forEach(object -> {
		if (object == null) {
			return;
		}
		JSONObject jsonObject = (JSONObject) object;
		if (jsonObject.getInteger("flagType") == null) {
			return;
		}
    	flagIconMap.put(jsonObject.getInteger("flagType"),jsonObject.getString("flagIcon"));
	});
}


Java中Map的赋值、取值、删除值、替换值等操作

Map赋值

定义一个Map结构,往里面插入几条记录:
Map<String, String> map = new HashMap<String, String>();
        map.put("1", "value1");
        map.put("2", "value2");
        map.put("3", "value3");

Map取值的五种方式
1、keySet二次取值
2、entrySet使用iterator遍历key和value
3、entrySet遍历key和value
4、通过Map.values()遍历所有的value,但不能遍历key

// 第一种:普遍使用,二次取值
        System.out.println("通过Map.keySet遍历key和value:");
        for (String key : map.keySet()) {
            System.out.println("key= " + key + " and value= " + map.get(key));
        }

        // 第二种
        System.out.println("通过Map.entrySet使用iterator遍历key和value:");
        Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<String, String> entry = it.next();
            System.out.println("key= " + entry.getKey() + " and value= "
                    + entry.getValue());
        }

        // 第三种:推荐,尤其是容量大时
        System.out.println("通过Map.entrySet遍历key和value");
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println("key= " + entry.getKey() + " and value= "
                    + entry.getValue());
        }

        // 第四种
        System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
        for (String v : map.values()) {
            System.out.println("value= " + v);
        }

        // 第五种
        System.out.println("直接通过key获取value");
        String data = map.get("1");
        System.out.println(data);

删除Map中的记录

1、map.remove(key)
2、map.remove(key,value)
/第一种方式
map.remove("1");
//第二种方式
map.remove("1","value1");

替换Map中的值

//第一种方式
map.replace("1","3");
//第二种方式
map.replace("1","value1","5");

查询Map中元素的个数

map.size()

判断Map中的元素是否为空

map.isEmpty()

判断Map中是否包含某某个指定key或value

map.containsKey("1")
map.containsValue("value1")

清除Map中的值

map.clear()

最后

以上就是洁净蜗牛为你收集整理的List中将 Map 某key值相等的累加的全部内容,希望文章能够帮你解决List中将 Map 某key值相等的累加所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部