Итак, несмотря на мой комментарий, я вижу одну вопиющую проблему с этим.Вы не можете использовать операторы равенства в ссылочных типах.То есть все, кроме примитивного типа (double, int и т. Д.).Что происходит, вы сравниваете адрес экземпляра, и если он не является буквально одним и тем же объектом (одним и тем же адресом в памяти), он никогда не вернет trueМожет быть, это то, что вы хотите, но я подозреваю, что нет.Вам необходимо переопределить метод
public boolean equals(Object obj);
и использовать его для сравнения двух экземпляров данного класса.Я прав в своих предположениях?
Редактировать Хорошо, я думаю, что мое первоначальное предположение было верным.Это работает, если они из одного и того же списка, потому что они в конечном итоге являются одинаковыми элементами (хранятся в той же ячейке памяти).Вам нужно использовать equals()
или !equals()
вместо ==
и !=
.Попробуйте, и посмотрите, решит ли это ваши проблемы.Кроме того, не просто используйте их, вы должны переопределить equals
, чтобы фактически сравнить внутренние свойства элементов.