Да, если вы хотите использовать CustomClass
в качестве элемента коллекции HashSet, вам необходимо предоставить метод hashCode
. И чтобы получить действительно уникальный хеш-код для вашего объекта, вам нужно рассчитать его, включая хэш-коды всех объектов. В вашем случае, включая хэш-код actionList
.
Благодаря JavaDoc для List#hashCode():
Возвращает значение хэш-кода для этого списка. Хэш-код списка определяется как результат следующего расчета:
int hashCode = 1;
for (E e : list)
hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
Это означает, что вы должны предоставить hashs (hashCode()
реализации) для ActionClass
также для того, чтобы вычислить хэш-код для коллекции.
То же самое верно и для List#equals(), если вы хотите добавить свой класс в некоторые другие коллекции, которые не требуют хэша объекта:
Сравнивает указанный объект с этим списком для равенства. Возвращает true тогда и только тогда, когда указанный объект также является списком, оба списка имеют одинаковый размер, и все соответствующие пары элементов в двух списках равны.
Вы должны обеспечить реализацию equals()
метода в вашем ActionClass
, чтобы сделать 2 переменные типа LinkedList<ActionClass>
сопоставимого друг с другом.
Конечно, вы можете избежать использования actionList
поля в equals()
и hashCode()
реализации CustomClass
, если вы уверены, что это значение не omportant для CustomClass
. Но в любом случае, это «хороший стиль», чтобы обеспечить реализацию обоих этих методов в ваших классах.
Ваш вопрос очень неясен. Пожалуйста, вы можете расширить свой примерный код, чтобы показать, как вы используете «CustomClass» более конкретно. –