我有一个奇怪的问题,我无法理解为什么会发生这种情况。
我equals在一个DoublyLinkedList泛型类中实现了这个方法:
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (getClass() != obj.getClass() || obj == null) {
return false;
}
DoublyLinkedList<E> other = (DoublyLinkedList<E>) obj;
if (this.size != other.size) {
return false;
}
Iterator<E> iterator = this.iterator();
Iterator<E> otherIterator = other.iterator();
while(iterator.hasNext()){
if(iterator.next() != otherIterator.next()){
return false;
}
}
return true;
}
在单元测试中测试此方法,如下所示:
@Test
public void testEquals() {
System.out.println("equals");
DoublyLinkedList <String> instance1 = new DoublyLinkedList <>(), instance2 = new DoublyLinkedList <>();
instance1.addLast("Xpto");
instance1.addLast("Ypto");
instance1.addLast("Zpto");
instance2.addLast("Xpto");
assertFalse("Lists should not be equal", (instance1.equals(instance2)));
assertFalse("Lists should not be equal", (instance2.equals(instance1)));
instance2.addLast("Ypto");
assertFalse("Lists should not be equal", (instance1.equals(instance2)));
assertFalse("Lists should not be equal", (instance2.equals(instance1)));
instance2.addLast("Zpto");
assertTrue("Lists should be equal", (instance1.equals(instance2)));
assertTrue("Lists should be equal", (instance2.equals(instance1)));
}
告诉我测试通过了。但是,如果我在第一个代码中使用!=, 而不是equals比较每个迭代器的实例,为什么会发生这种情况?它不应该比较引用,从而失败吗?
慕沐林林
相关分类