java.util.List remove方法的疑惑

问题描述

我用一个后台服务返回 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

java.util.List remove方法的疑惑的相关文章

java.util.ConcurrentModificationException 解决方法_OpenStack

 java.util.ConcurrentModificationException 解决方法 在使用iterator.hasNext()操作迭代器的时候,如果此时迭代的对象发生改变,比如插入了新数据,或者有数据被删除. 则使用会报以下异常: Java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) at java.util.HashMap$Key

java.util.ArrayDeque类使用方法详解_java

本文为大家介绍了java.util.ArrayDeque类使用方法,供大家参考,具体内容如下 1. ArrayDeque有两个类属性,head和tail,两个指针. 2. ArrayDeque通过一个数组作为载体,其中的数组元素在add等方法执行时不移动,发生变化的只是head和tail指针,而且指针是循环变化,数组容量不限制. 3. offer方法和add方法都是通过其中的addLast方法实现,每添加一个元素,就把元素加到数组的尾部,此时,head指针没有变化,而tail指针加一,因为指针是

java.util.ConcurrentModificationException异常 解决方法

原文:http://blog.sina.com.cn/s/blog_48dc562301000d2b.html 今天写一个程序的时候遇到了java.util.ConcurrentModificationException异常,半天不知道是什么问题,这里举个简单的例子重现一下异常是如何出现的: import java.util.ArrayList; import java.util.Iterator; class User { private String userName, password;

解决方法:java.util.MissingResourceException Can't find bundle for base name

Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name MessageResource, locale zh_CN at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1427) at java.util.ResourceBundle.getBundl

我的Android进阶之旅------>Android编译错误java.util.zip.ZipException: duplicate entry的解决方法

今天在Android Studio中把另外一个项目引入当前项目,编译的时候出现了java.util.zip.ZipException: duplicate entry错误. 错误如下所示: FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':watch:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipExcept

对于java equals方法的疑惑。

问题描述 对于java equals方法的疑惑. String s1 = new String("123"); String s2 = new String("123"); System.out.println(s1.equals(s2)); Test t1=new Test("123"); Test t2=new Test("123"); System.out.println(t1.equals(t2)); 为何上面输出的是

[JavaME]利用java.util.TimerTask来做Splash Screen的N种方法

请参考java.util.TimerTask. TimerTask is something like Timer in VisualBasic. You can sepcify a time period in milliseconds for your requirement"一幅LOGO显示完以后,几秒种自动显示下一幅LOGO".  Here is an sample code. public void testTimer() {MyTimerTask myTimerTask =

java.util.concurrent.ExecutionException 问题解决方法_java

java.util.concurrent.ExecutionException错误信息,这里给出解决方案,大家根据具体要求更改. SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].Standa

java.util包学习笔记一

笔记 学习java2SDK 1.4.0 java.util里边有几个重要的接口,列在这里作为学习的总结: 1 java.util.Enumeration有两个方法hasMoreElements(),nextElement().使用方法如下://打印向量v的所有元素for(Enumeratin e = v.elements(); e.hasMoreElements();){ System.out.println(e.nextElement().toString());}这里注意要调用nextEle