同一个List<Map<String,Object>>集合中元素两两相比
List<Map<String, Object>> list = new ArrayList<>(); for(int j=0; j < 5; j++){ Map<String, Object> map = new HashMap<>(); for(int i=0; i <= 3; i++){ map.put(CastUtil.castString(i),i); } list.add(map); } for(Map<String,Object> map : list){ System.out.println(map); } for(int i=0; i < list.size()-1; i++){ for(int j=list.size()-1; j > i; j--){ Map<String, Object> zhengMap = list.get(i); Map<String, Object> fanMap = list.get(j); String zheng = zhengMap.get("0").toString(); String fan = fanMap.get("0").toString(); if(zheng.equals(fan) && fanMap.get("4") == null){ for(Map.Entry<String,Object> entry:zhengMap.entrySet()){ if(!entry.getKey().equals("0")){ double value1 = CastUtil.castDouble(fanMap.get(entry.getKey())); double value2 = CastUtil.castDouble(entry.getValue()); zhengMap.put(entry.getKey(),value1 + value2); //标记字段表示已经比较过 fanMap.put("4",0); } } } } } System.out.println(); System.out.println(); System.out.println(); for(Map<String,Object> map : list){ System.out.println(map); }
双层for循环为核心,采用正反向遍历,用标记字段标记已经比较过的元素