List key相同 value 累加

  1. public static void main(String[] args) {
  2. List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  3. Map<String, Object> map1 = new HashMap<String, Object>();
  4. map1.put("id", 1);
  5. map1.put("value", 2);
  6. list.add(map1);
  7. Map<String, Object> map2 = new HashMap<String, Object>();
  8. map2.put("id", 1);
  9. map2.put("value", 5);
  10. list.add(map2);
  11. Map<String, Object> map3 = new HashMap<String, Object>();
  12. map3.put("id", 2);
  13. map3.put("value", 5);
  14. list.add(map3);
  15. Map<String, Object> map4 = new HashMap<String, Object>();
  16. map4.put("id", 2);
  17. map4.put("value", 4);
  18. list.add(map4);
  19. Map<String, Object> map5 = new HashMap<String, Object>();
  20. map5.put("id", 1);
  21. map5.put("value", 4);
  22. list.add(map5);
  23. //id相等value相加(合併id相同數據)
  24. System.out.println("原始數據:"+list);
  25. //方法一
  26. Map<String, Object> result1 = new HashMap<String, Object>();
  27. for(Map<String, Object> map : list){
  28. String id = map.get("id").toString();
  29. Long value = Long.parseLong(map.get("value").toString());
  30. if(result1.containsKey(id)){
  31. Long temp = Long.parseLong(result1.get(id).toString());
  32. value += temp;
  33. }
  34. result1.put(id, value);
  35. }
  36. System.out.println("合併後的數據:"+result1);
  37. //方法二
  38. Map<String, Map<String, Object>> result2 = new HashMap<String, Map<String,Object>>();
  39. for(Map<String, Object> map : list){
  40. String id = map.get("id").toString();
  41. Long value = Long.parseLong(map.get("value").toString());
  42. if(result2.containsKey(id)){
  43. Long temp = Long.parseLong(result2.get(id).get("value").toString());
  44. value += temp;
  45. result2.get(id).put("value", value);
  46. continue;
  47. }
  48. result2.put(id, map);
  49. }
  50. System.out.println("合併後的數據2:"+result2);
  51. }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章