我有下面的代码,并且我已经在覆盖equals()
和hashCode()
方法ContainerBean
上放置了断点。当我在调试模式下在应用程序下运行时,调试器仅在行停止,而不是在尝试从List
删除元素时停止在System.out.println
行。在Eclipse中调试equals()和hashCode()
import java.util.ArrayList;
import java.util.List;
public class ListRemovalDriver {
public static void main(String[] args) {
List<ContainerBean> remitClaims = new ArrayList<>();
ContainedBean addedRemit1 = new ContainedBean();
addedRemit1.setRemitId(12345L);
ContainerBean added1 = new ContainerBean();
added1.setRemitBean(addedRemit1);
remitClaims.add(added1);
ContainedBean removedRemit1 = new ContainedBean();
removedRemit1.setRemitId(12345L);
ContainerBean removed1 = new ContainerBean();
removed1.setRemitBean(removedRemit1);
System.out.println("List before valid removal" + remitClaims);
remitClaims.remove(removed1);
System.out.println("List after valid removal" + remitClaims);
}
}
我错过了什么吗?
将被覆盖equals()
在ContainerBean
从列表中删除元素时不会被调用?
编辑
我忘了提,hashCode()
和equals()
预期,即元素越来越为每equals()
逻辑,但它仅是不把我那里名单删除函数调用调试器除去正在工作。从JDK 7的ArrayList
正如我的代码所示,我不是通过索引删除,而是传递一个对象来删除。对象被成功移除,但是它唯一的Eclipse调试器在那个事件中没有带我去那里。 –
我知道,我刚刚添加了这一点,让你明白其中的差异。 – developer