一个list<Map>里map其中的一个字段的值相同,如何判断这个字段相同,就把这个map的其他字段存入另一个map中
如:List<Map>:map1:{ID:4,身高:170,体重:60}map2:{ID:4,年龄:20,性别:男}map3:{ID:5,身高:160,体重:50}map...
如:List<Map>:map1:{ID:4,身高:170,体重:60}
map2:{ID:4,年龄:20,性别:男}
map3:{ID:5,身高:160,体重:50}
map4:{ID:5,年龄:19,性别:女}
每一个map中都都有ID序号。如何根据ID序号判断,得到最终的结果?
最终的结果是List<Map>:map1{ID:4,身高:170,体重:60,年龄:20,性别:男}
map2:{ID:5,身高:160,体重:50,年龄:19,性别:女} 展开
map2:{ID:4,年龄:20,性别:男}
map3:{ID:5,身高:160,体重:50}
map4:{ID:5,年龄:19,性别:女}
每一个map中都都有ID序号。如何根据ID序号判断,得到最终的结果?
最终的结果是List<Map>:map1{ID:4,身高:170,体重:60,年龄:20,性别:男}
map2:{ID:5,身高:160,体重:50,年龄:19,性别:女} 展开
1个回答
展开全部
不建议使用Map保存这些,使用实体bean更好
package com.rxlamo.zhidao;
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Map<String, Object>> list = new ArrayList<>(4);
/*
* map1:{ID:4,身高:170,体重:60}
map2:{ID:4,年龄:20,性别:男}
map3:{ID:5,身高:160,体重:50}
map4:{ID:5,年龄:19,性别:女}
*/
Map<String, Object> map1 = new HashMap<>();
map1.put("ID", 4);
map1.put("身高", 170);
map1.put("体重", 60);
list.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("ID", 4);
map2.put("年龄", 20);
map2.put("性别", '男');
list.add(map2);
Map<String, Object> map3 = new HashMap<>();
map3.put("ID", 5);
map3.put("身高", 160);
map3.put("体重", 50);
list.add(map3);
Map<String, Object> map4 = new HashMap<>();
map4.put("ID", 5);
map4.put("年龄", 19);
map4.put("性别", '女');
list.add(map4);
merge(list);
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = list.get(i);
System.out.println(map);
}
}
private static void merge(List<Map<String, Object>> list) {
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = list.get(i);
// 从当前项的下一项开始检查
for (int j = i + 1; j < list.size(); j++) {
Map<String, Object> childMap = list.get(j);
// ID 相等
if (map.get("ID").equals(childMap.get("ID"))) {
// 合并,此处需要先 remove
list.remove(childMap);
map.putAll(childMap);
}
}
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询