Java 使用HashSet.add()的自己的实现

Java 使用HashSet.add()的自己的实现,java,performance,data-structures,hash,hashset,Java,Performance,Data Structures,Hash,Hashset,我正在使用哈希集向哈希集添加唯一用户。这些用户经常从在线源进行更新,当它从那里读入时,每次都会得到一个新对象,因此所有用户都会被再次添加 我的用户类中有一个UserID变量,我想使用它将用户添加到HashSet并确保唯一性 private HashSet<User> userHashSet = new HashSet<User>(); userHashSet.add(user); //based on the users id it will either add or

我正在使用哈希集向哈希集添加唯一用户。这些用户经常从在线源进行更新,当它从那里读入时,每次都会得到一个新对象,因此所有用户都会被再次添加

我的用户类中有一个UserID变量,我想使用它将用户添加到HashSet并确保唯一性

private HashSet<User> userHashSet = new HashSet<User>();

userHashSet.add(user);
//based on the users id it will either add or not
private HashSet userHashSet=new HashSet();
userHashSet.add(用户);
//根据用户id,它将添加或不添加

我希望这样做不会降低效率,最好只使用一个HashSet,您应该在
User
类中实现
equals
hashCode
方法

例如:

@Override
public int hashCode() {
    return getUserId().hashCode();
}

@Override
public boolean equals(Object obj) {
    return obj instanceof User &&
        getUserId().equals(((User) obj).getUserId());
}

您应该在
User
类中实现
equals
hashCode
方法

例如:

@Override
public int hashCode() {
    return getUserId().hashCode();
}

@Override
public boolean equals(Object obj) {
    return obj instanceof User &&
        getUserId().equals(((User) obj).getUserId());
}

您需要在
User
类中实现
hashCode
equals
方法。只要您正确地实现了这两种方法,您将在
哈希集中获得唯一的条目


关于如何正确实现这些方法的文章很多(例如),但最简单的方法是让IDE自动生成这些方法,或者使用Apache Commons helpers。

您需要在
用户
类中实现
hashCode
equals
方法。只要您正确地实现了这两种方法,您将在
哈希集中获得唯一的条目


关于如何正确实现这些方法的文章很多(例如),但最简单的方法是让IDE自动生成这些方法,或者使用Apache Commons helpers。

这正是解决方案!谢谢,这正是解决办法!非常感谢。