在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版权协议,转载请附上原文出处链接和本声明。