去掉List集合中重复的Map对象
在日常开发,List集合中按某个属性删除集合里重复的对象的情况是常常要遇到的,这里提供一种比较有效率的删除方法。
public class Test {
public static void main(String[] args) {
//首先,新建若干个Map<String, Object>对象:
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("name","zhangsan");
map1.put("age","22");
Map<String, Object> map2 = new HashMap<>();
map2.put("name","wanger");
map2.put("age","23");
Map<String, Object> map3 = new HashMap<>();
map3.put("name","zhangsan");
map3.put("age","23");
Map<String, Object> map4 = new HashMap<>();
map4.put("name","wanger");
map4.put("age","23");
Map<String, Object> map5 = new HashMap<>();
map5.put("name","zhaoliu");
map5.put("age","23");
list.add(0,map1);
list.add(1,map2);
list.add(2,map3);
list.add(3,map4);
list.add(4,map5);
//过滤掉name相同的元素
List<Map<String, Object>> list2 = filterListByName(list);
System.out.println(list2);
}
private static List<Map<String, Object>> filterListByName(List<Map<String, Object>> list) {
if(null==list || list.size()<=0){
return list;
}else{
for(int i=0; i<list.size(); i++){
Map<String, Object> map1 = list.get(i);
for(int j=i+1; j<list.size(); j++){
if(map1.get("name").equals(list.get(j).get("name"))){
list.remove(j);
j--;
}
}
}
return list;
}
}
}
结果如下:
[{age=22, name=zhangsan}, {age=23, name=wanger}, {age=23, name=zhaoliu}]