class A {
public static void main(String args[]) {
List<Emp> l=new ArrayList<Emp>();
l.add(new Emp(1,23000,"ram");
l.add(new Emp(2,24000,"aam");
l.add(new Emp(1,23000,"ram");
}
}
class Emp {
int id, salary, name;
Emp(int id, int salary,int name) {
this.id=id;
this.salary=salary;
this.name=name;
}
}
答案 0 :(得分:2)
第一件事就是将equals()
和hashCode()
添加到你的Emp类中,就像这样(没有构造函数,getter和setter):
public class Emp {
private int id;
private int salary;
private int name;
@Override
public boolean equals(final Object o) {
if (this == o) {
return true;
}
if (!(o instanceof Emp)) {
return false;
}
final Emp emp = (Emp) o;
if (id != emp.id) {
return false;
}
if (name != emp.name) {
return false;
}
if (salary != emp.salary) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + salary;
result = 31 * result + name;
return result;
}
}
然后你可以编写一个方法:
public List<Emp> removeDuplicate(final List<Emp> items) {
final List<Emp> result = new ArrayList<Emp>();
final List<Emp> doublettes = new ArrayList<Emp>();
for(final Emp item : items) {
if (!doublettes.contains(item) {
result.add(item);
doublettes.add(item);
}
}
return result;
}
顺便问一下,你真的想要一个名字int
吗?在您的示例中,您使用String并在构造函数int中。如果您需要String
,则必须修改equals()
和hashCode()
。