亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java8中Stream list to Map key重復value合并到Collectio的示例分析

發布時間:2021-06-10 13:51:04 來源:億速云 閱讀:2806 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關java8中Stream list to Map key重復value合并到Collectio的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

java8 Stream list to Map key 重復 value合并到Collectio

關于把list轉換成key value的map有很多博客上都有實現,這里是一個把value放入到集合中去

List<String> list = Lists.newArrayList("1", "2", "3", "1");
        Map<String, List<String>> map = list.stream().collect(Collectors.toMap(key -> key,
                value -> Lists.newArrayList(value),
                (List<String> newValueList, List<String> oldValueList) -> {
                    oldValueList.addAll(newValueList);
                    return oldValueList;
                }));
        System.out.println(JSON.toJSONString(map));

類似的,你的list泛型可以是一個bean,取bean的屬性當key或者value,轉換成一個集合

結果:

{"1":["1","1"],"2":["2"],"3":["3"]}

list中Map合并重復數據(map中key相等的value值相加)

public static void main(String[] args) {
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		Map<String, Object> map1 = new HashMap<String, Object>();
		map1.put("id", 1);
		map1.put("value", 2);
		list.add(map1);
		
		Map<String, Object> map2 = new HashMap<String, Object>();
		map2.put("id", 1);
		map2.put("value", 5);
		list.add(map2);
		
		Map<String, Object> map3 = new HashMap<String, Object>();
		map3.put("id", 2);
		map3.put("value", 5);
		list.add(map3);
		
		Map<String, Object> map4 = new HashMap<String, Object>();
		map4.put("id", 2);
		map4.put("value", 4);
		list.add(map4);
		
		Map<String, Object> map5 = new HashMap<String, Object>();
		map5.put("id", 1);
		map5.put("value", 4);
		list.add(map5);
		
		//id相等value相加(合并id相同數據)
		System.out.println("原始數據:"+list);
		
		//方法一
		Map<String, Object> result1 = new HashMap<String, Object>();
		for(Map<String, Object> map : list){
			String id = map.get("id").toString();
			Long value = Long.parseLong(map.get("value").toString());
			if(result1.containsKey(id)){
				Long temp = Long.parseLong(result1.get(id).toString());
				value += temp;
			}
			result1.put(id, value);
		}
		System.out.println("合并后的數據:"+result1);
		
		//方法二
		Map<String, Map<String, Object>> result2 = new HashMap<String, Map<String,Object>>();
		for(Map<String, Object> map : list){
			String id = map.get("id").toString();
			Long value = Long.parseLong(map.get("value").toString());
			if(result2.containsKey(id)){
				Long temp = Long.parseLong(result2.get(id).get("value").toString());
				value += temp;
				result2.get(id).put("value", value);
				continue;
			}
			result2.put(id, map);
		}
		System.out.println("合并后的數據2:"+result2);
 
	}

感謝各位的閱讀!關于“java8中Stream list to Map key重復value合并到Collectio的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永靖县| 桦川县| 当阳市| 手游| 珲春市| 阜城县| 宿迁市| 县级市| 石景山区| 河北省| 汝南县| 成安县| 柳江县| 景东| 肥东县| 延长县| 遵化市| 普宁市| 铜梁县| 沧源| 青岛市| 丹阳市| 天柱县| 大洼县| 永仁县| 喀喇| 固原市| 永登县| 承德市| 静安区| 五峰| 武山县| 汝阳县| 平泉县| 扎囊县| 云安县| 汝南县| 翼城县| 梁平县| 乐陵市| 建宁县|