2013-03-18 2 views
1

У меня есть пользовательский класс, который выглядит, как показано ниже:пользовательского класса, используемого в Список/HashSet

public class customClass(){ 
    private int keyCode; 
    private boolean up; 
    private String toTrigger; 

    public String getTrigger(); 
    public boolean up(); 
    public int keyCode(); 
} 

Что лучший способ для производительности, чтобы получить список уникальных значений?

Я думал о HashSet, но как бы убедиться, что это единственные уникальные экземпляры моего customClass?

Что мне нужно переопределить? Equals и HashCode? будет ли убедиться, что у моего набора хэшей CustomClass есть только уникальные экземпляры?

Благодаря

+0

Это может помочь вам: http://stackoverflow.com/a/27609/1068167 – span

+0

В принципе, да: Игнорирование '' equals' и hashCode' достаточно, но убедитесь, чтобы переопределить их правильно, что не просто. (см. ссылку от * span * выше) – Sentry

+0

Ahh thanks :) Итак, в хэш-наборе используется хэш-набор, чтобы определить, является ли его равным? Хэш-код или равно? – LmC

ответ

2

Если a.equals (б) верно, то есть хэш-код() необходимо также быть таким же.

  • Переопределите оба .equals() и .hashCode() в вашем пользовательском классе.

    Используйте те же поля своего пользовательского класса для вычисления hashCode, который вы использовали для проверки равенства в .equals().

  • Да, он удостоверится, что в хэш-наборе есть только уникальные экземпляры вашего customClass. Так что пойдите для этого.

+1

** Нет **. Если два объекта равны, 'hashCode()' ** должен ** быть одинаковым. – SLaks

+0

@SLaks Спасибо, что исправил меня. – VishalDevgire

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