2015-07-16 7 views
0

Я использую HashSet для добавления уникальных пользователей в hashset. Эти пользователи часто обновляются из онлайн-источника, и когда он читает его оттуда, он каждый раз получает новый объект, поэтому все пользователи снова добавляются.Использование собственной реализации HashSet.add()

У меня есть переменная UserID в моем классе пользователей и вы хотели бы использовать ее для добавления пользователей в HashSet и обеспечения уникальности.

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

userHashSet.add(user); 
//based on the users id it will either add or not 

Я хочу сделать это без потери эффективности и предпочтительно только один HashSet

ответ

4

Вы должны осуществлять equals и hashCode метод в вашем User классе.

В качестве примера:

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

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

Это было именно то решение! спасибо – hakobob

1

Вы должны реализовать hashCode и equals методы в вашем User классе. Пока вы правильно реализуете эти два метода, вы получите уникальные записи в своем HashSet.

Существует много статей о том, как правильно их реализовать (например, What issues should be considered when overriding equals and hashCode in Java?), но самый простой способ сделать это, чтобы ваша среда IDE автоматически генерировала эти методы или использовала помощники Apache Commons.

Смежные вопросы