List去重
我们知道List允许有相同的元素,那么我们怎么通过方法来让它去重呐,
我们都会想到Set集合,Set集合是不允许有相同的元素的,所以我们可以借助Set集合,把重复的元素去掉。如果不是对象类型的去重。直接用Set集合转化就行。就像下面的
List list = new ArrayList();
list.add("aa");
list.add("dd");
list.add("cc");
list.add("aa");
Set set = new HashSet();
set.addAll(list);
List n = new ArrayList<>();
n.addAll(set);
System.out.println(n);
结果:
[aa, dd, cc]
通过这,你会发现可以啊
但是对象呐,
public class People {
private String name;
private String phoneNumber;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public People(String name, String phoneNumber) {
super();
this.name = name;
this.phoneNumber = phoneNumber;
}
@Override
public String toString() {
return "People{" +
"name='" + name + ''' +
", phoneNumber='" + phoneNumber + ''' +
'}';
}
}
这种需要重写equals和hashcode,再用Set去重。
public class People {
private String name;
private String phoneNumber;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public People(String name, String phoneNumber) {
super();
this.name = name;
this.phoneNumber = phoneNumber;
}
@Override
public String toString() {
return "People{" +
"name='" + name + ''' +
", phoneNumber='" + phoneNumber + ''' +
'}';
}
@Override
public boolean equals(Object arg0) {
// TODO Auto-generated method stub
People p = (People) arg0;
return name.equals(p.name) && phoneNumber.equals(p.phoneNumber);
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
String str = name + phoneNumber;
return str.hashCode();
}
}
这里注意一下重写equals方法和hashcode方法
public boolean equals(Object orgs){
// 强制类型转换
People p = (People)orgs;
return p.name.equals( name )&& p.phoneNumber.equals(phoneNumber);
}
public int hashcode(){
String str = name + phoneNumber;
return str.hashCode();
}
还没有评论,来说两句吧...