去除列表中集合的重复值网上有很多的教程这里给大家贴几个连接
https://blog.csdn.net/cs6704/article/ details / 50158373
大致的思想都是通过设置Set集合不能有重复的数据这思路
像很多都是通过字符串来演示的,但是,我们工作当中其实并不是这样的都是对象来去重。
那么上面的方法很多就失灵了,其实是如果对象去重是要手写equals方法和hashCode方法
举个例子:
private String name;
private int id;
private String phoneNumber;
private int age;
private String introduce;
public People(String name, int id, String phoneNumber, int age,
String introduce) {
super();
this.name = name;
this.id = id;
this.phoneNumber = phoneNumber;
this.age = age;
this.introduce = introduce;
}
// ....... 这里省略getter和setter方法
@Override
public boolean equals(Object arg0) {
People p = (People) arg0;
return name.equals(p.name) && phoneNumber.equals(p.phoneNumber);
}
@Override
public int hashCode() {
String str = name + phoneNumber;
return str.hashCode();
}
这两个方法里面的参数请保持一致,这个意思是说比较name和phoneNumber这两个值是否都相同,如果一致的话去重。
下面给个公共方法大家往里面传值就可以了
/**
*去除重复元素
*/
public static ArrayList getArrayList(ArrayList list){
ArrayList newList = new ArrayList();
Iterator it = list.iterator();
while(it.hasNext()){
Object obj = it.next();
if(!newList.contains(obj)){
newList.add(obj);
}
}
return newList;
}