使用map巧妙去除集合中重复的对象

在mysql中如果查询一条去除重复的数据大家都知道使用DISTINT进行去重,但是DISTINT去除重复是你查询的多个列表项全部相同才能去重,查询的数据某个列的值相同其它列的值不同是不能去除掉的。

如:



现在我需要把某一列的值相同的只选取一条,达到去重的效果,我试了下使用set去重,只有这个对象的所有的属性的值相同才会去掉重复的,最后只是用map进行去重,for循环把集合中的对象装到map中,将你想要去掉的重复的列的值设置为map的key,key相同的后面的会覆盖掉前面的value,达到了去重的效果,代码如下:

public void dataObjectjob() {  


// TODO Auto-generated method stub  


List<PageData> hunyindata = new ArrayList<PageData>();  //婚姻的个人数据集合


List<PageData> funeraldata = new ArrayList<PageData>();  //殡葬的个人数据集合



HashMap<String, PageData> map = new HashMap<>();  


PageData params = new PageData();  


try {  



hunyindata = this.listhunyin(params);  //获取婚姻的个人数据集合


funeraldata = this.listfuneraldata();  //获取殡葬的个人数据集合


for (int i = 0; i < hunyindata.size(); i++) {  


map.put(hunyindata.get(i).get("IDCARD").toString(), hunyindata.get(i));  //以身份证号作为Key将个人信息存入map中


}  


for (int j = 0; j < funeraldata.size(); j++) {  


map.put(funeraldata.get(j).get("IDCARD").toString(), funeraldata.get(j));  //以身份证号作为Key将个人信息存入map中,身份证号相同的将会被覆盖掉,HashSet必须要对象的属性全部相同才会去重


}  


} catch (Exception e) {  


// TODO: handle exception  


e.printStackTrace();  


}  


}  







版权声明:本文为wangshan_1121原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。