问题描述
我用一个后台服务返回 Hibernate下 List list = boParty.getListByParent(new Integer(0)); 其中list里面肯定包含了一个PoParty id为10 我现在想 boolean bok = list.remove(那个肯定包含的PoParty对象). 结果bok返回的是false; 我真的有点不解了, remove(Object o)这个方法到底行不行啊
解决方案
List中什么对象,equals方法重写过吗,从此列表中移除第一次出现的指定元素(如果存在)(可选操作)。如果列表不包含元素,则不更改列表。更确切地讲,移除满足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引 i 的元素(如果存在这样的元素)。如果此列表已包含指定元素(或者此列表由于调用而发生更改),则返回 true。 要使用equals来查找相同对象的,如果没有重写,比较的是地址,当然查不出来了
解决方案二:
集合应用中注意的事项:重写 equals重写 hashCode
解决方案三:
你没有重写equals方法,那么对象比较的就是是否这两对象为同一对象,与用==比较两个对象原理相同,比较是的hashcode地址,所以查不出来,你可以像ls说的重写equals方法,注意equals方法重写的格式是public boolean equals(Object obj){}那个object不能换成别的
时间: 2024-08-31 08:13:11