如何存储唯一对象以避免java Set中的重复项?

iam*_*der 2 java hashtable hashmap set

如何存储唯一对象以避免java Set中的重复项?

例如

考虑员工对象(员工ID,姓名,工资....)

需要在Set中添加对象的员工列表.我们需要限制需要通过"员工ID"识别的重复元素的Set.

最好的办法是什么?

Dir*_*irk 15

如果您正在使用a的实现,java.util.Set只要您equalshashCode方法正确实现,就不应该允许重复.不知道为什么你的问题上有hashmap和hashtable作为标签.也许你应该改写你的问题并添加给你问题的代码?

编辑:考虑您的编辑:

如果您使用a Set,您的Employee应该具有以下方法:

@Override
public int hashCode() {
  final int prime = 31;
  int result = 1;
  result = prime * result + ((id == null) ? 0 : id.hashCode());
  return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj)
      return true;
    if (obj == null)
      return false;
    if (getClass() != obj.getClass())
      return false;
    Employee other = (Employee) obj;
    if (id == null) {
      if (other.id != null)
        return false;
    } else if (!id.equals(other.id))
      return false;
    return true;
  }
Run Code Online (Sandbox Code Playgroud)