Java 如何删除具有相同id的重复对象';这是一套
HashSet包含对象,我想删除其对象具有相同id的重复项 下面是代码Java 如何删除具有相同id的重复对象';这是一套,java,hashset,Java,Hashset,HashSet包含对象,我想删除其对象具有相同id的重复项 下面是代码 Set<Employee> empSet=new HashSet<Employee>(); empSet.add(new Employee(1,"naresh")); empSet.add(new Employee(2,"raj")); empSet.add(new Employee(1,"nesh")); empSet.add(new Employee(2,"rajes")); Set empSe
Set<Employee> empSet=new HashSet<Employee>();
empSet.add(new Employee(1,"naresh"));
empSet.add(new Employee(2,"raj"));
empSet.add(new Employee(1,"nesh"));
empSet.add(new Employee(2,"rajes"));
Set empSet=newhashset();
增加(新员工(1名,“纳雷什”);
增加(新员工(2名,“raj”);
增加(新员工(1名,“nesh”);
增加(新员工(2名,“rajes”);
//我在一些博客中看到,我们可以使用hashCode equals方法,但我不知道如何在这种情况下使用它,请帮助我
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes='id')
class Employee {
int id
String name
}
如果使用AST,也可以删除构造函数。Canonical还提供,但要添加include,必须再次单独使用
更新
如果该类不可修改,并且您有一个列表/hasSet,那么您可以使用带有闭包的unique
来执行唯一性。假设注释中提到的SolrDocument
被称为Employee
,并且您具有具有重复的id
的上述哈希集,那么下面应该可以工作:
empSet.unique { it.id } //this mutates the original list
empSet.unique( false ) { it.id } //this does not mutate the original list
写equals和hashCode,如下所示
public class Employee {
private int id;
private String name;
public Employee(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Employee employee = (Employee) o;
if (id != employee.id) return false;
return true;
}
@Override
public int hashCode() {
return id;
}
}
您需要重写Employee类中的equals()方法,它将得到处理。Set使用equals方法比较插入到集合中的对象
public class Employee
{
public boolean equals(Employee e)
{
/// logic to compare 2 employee objects
}
}
重写Employee.java中的equals方法,当两个对象的id相同时返回true。这是Groovy吗?看起来像Java…实际上,如果它的对象类型是org.apache.solr.common.SolrDocument,那么我应该怎么做?SolrDocument只是一个映射。你能举个例子说明你在SolrDocument中放了什么吗?实际上,如果它的对象类型是org.apache.solr.common.SolrDocument,那么我应该怎么做?哪个对象?问题中为什么没有提到?你能在问题中清楚地阐述一下吗@在讨论其他问题之前,这是Groovy类还是Java类@Naresh实际上使用groovy,但我们使用ApacheSolr,在从solr获取数据时,它将给出org.apache.solr.common.SolrDocument的列表