List中remove()方法移除不了数据,达人快来~

我有一部分代码,是从数据库里查出项目成员传给List<User>a,也是从数库取出全部员工List<User>b,现在想从List<User>b中用romveAll方法把... 我有一部分代码,是从数据库里查出项目成员传给List<User> a,
也是从数库取出全部员工List<User> b, 现在想从List<User> b中用romveAll方法把含有的a 全部移除---成功,然后还想从b 中remove() 项目经理(也是一user)---失败,不晓得为什么,只是debug时发现其他的数据类型都显示User ,而不能删除的项目经理,类型为 User_#javasist_2,反正就是跟着一些字符,这种类型为什么和正常的User不一样,怎么导致的,为什么删不了,跟hibernate有关吗?高手啊~快帮我啊~如果特满意另加分
先谢谢各位~我写了equals方法了,问题就出在,为什么查出所有User时,debug发现其它的员工类型都是User类型,能remove掉,而项目经理那个员工的类型就是User_$$_javassist_3这类型的,remove失败。而且这些数据都是我用hibernate一条hql语句查出来的,很简单的select语句。经理和普通员工都是在User表里,不同的就是,与别的表的关联关系。这能不能是用hibernate的原因?
展开
 我来答
apollo47
推荐于2016-09-17 · TA获得超过1451个赞
知道小有建树答主
回答量:810
采纳率:0%
帮助的人:539万
展开全部
类User重载方法equals.

public boolean equals(Object object){
if(object instanceof User){
User user = (User)object;
// 我这里是用id来比较,如果User没有id属性,也有用账号、身份证号等属性来比较。
return user.getId().equalsIgnoreCase(this.id);
}else{
return false;
}
}

从List中删除某个对象,是要调用对象的equals方法,和List中的对象相比较,相等才删除。如果不重装equals方法,那么调用的就是父类Object的equals方法,这样是用 == 相判断相等的。只有两个变量指向的是同一个对象,== 判断才会相会。
String s1 = new String("a");
String s2 = new String("a");

s1 == s2 为false.
s1.equals(s2) 为 true.

如果是这样,建议你重载hashCode方法。否则,当你用User对象作为Key放到HashMap中时,还会出现问题。
百度网友b7d2b2f
2007-11-24 · TA获得超过901个赞
知道小有建树答主
回答量:994
采纳率:50%
帮助的人:582万
展开全部
1、使用List的前提条件是:必须重写equals和hashcod方法,String等类都给你写好了 你可以不写;但是,你自己定义的类要重写;

2、当你用iterator遍历取直的时候,必须用iterator里的remove方法删除东西,而不是Collection里的remove方法,否则有可能出错,但不是一定出错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qq175533696
2007-11-23
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
看看你romveAll方法里面的条件

如果是if(项目经理.equals(b.getint(i)))
b.romve(i)
的话就可能出错

建议改成if(项目经理.getID().equals(b.getInt(i).getID()))
b.romve(i)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式