Я создал класс, который можно унаследовать для создания стека и очереди с помощью LinkedLists. Я прошел все тесты JUnit, кроме равных , Я до сих пор не знаю, почему это не работает.Сравнение исходного объекта с стеком/очередью - метод overriding equals()
@Override public boolean equals(Object o) {
if(o == null) return false;
if(o == this) return true;
if(!(o instanceof PushPop)) return false;
PushPop test1= this;
PushPop test = (PushPop)o;
while(!test.isEmpty() && !test1.isEmpty()){
if(test1.pop() != test.pop()) return false;
}
return true;
}
Тест посылает сообщение об ошибке, когда утверждение это сравнение значений, в частности, всякий раз, когда стек/очередь имеет дополнительное значение, чем второй.
Вы изменяете свои стеки во время 'equals'. Фактически вы очищаете их. Вы видите, как это может быть проблемой? –
Я изменяю стеки, поскольку мне нужно сравнить все объекты, и у меня нет другого пути, кроме как вытащить каждый элемент и сравнить его с другим стеклом, который был вставлен. Я должен проверить, являются ли элементы одинаковыми и в том же порядке, хотя у вас есть точка. Я должен создать копию оригинала, чтобы он не изменялся. Я отредактировал код, чтобы добавить копию структуры данных. –
Посмотрите, исправляет ли ваша проблема ... Я вижу, что вы выполняете один и тот же тест дважды, и он просто возвращает «истина» второй раз, потому что они оба пустые –