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()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值