java list的remove方法问题

Posted 晨港飞燕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java list的remove方法问题相关的知识,希望对你有一定的参考价值。

使用list集合存储数据的时候,明明感觉用remove方法删除其中一个对象没有问题,但是后台却报错,如何解决这个问题呢?

删除时,可以直接删除这个对象,则不会报错,加入List<User> list;

则删除时list.remove(user);

若使用如下方式则容易出问题

for (int i = 0; i < list.size(); i++)

list.remove(i);

// i--;

//System.out.println(i+" "+list.get(i)+" ");

运行结果如下:

报错原因如下: List每remove掉一个元素以后,后面的元素都会向前移动 ,此时如果执行i++,则刚刚移过来的元素没有被读取

所以直接删除这个对象,即使元素位置移动,但是我们删除时是直接取的对象,所以不会报错,注意:直接删除对象,会把所有符合删除条件的对象全都删除。

解决方法请接着往下看:

解决方法:

1、每移动一次后,再把i移动回来

2、删除时,从后往下删,先删除后面的元素

3、iterator删除(此方法有待进一步验证)

以下两种示例均为正确写法(运用的原理就是直接删除对象的思路)

上述方法取值删除时,最终取的是对象的值,这样可以解决该报错问题。

list的remove()报错后的解决思路:使用remove()的方法时,要先从大到小的位置移除。当然如果你知道具体的对象,直接移除remove(对象)更稳妥。

总结

1、使用remove()的方法时,要先从大到小的位置移除。当然如果你知道具体的对象,直接移除remove(对象)更稳妥。(注意,根据我的经验,这种移除对象方法,有bug,改用了iterator)

2、要密切注意自己调用的remove()方法中的,传入的是int类型还是一个对象,直接删除对象时,前提是list中存储的是对象数据,此时删除需额外注意。

原文:百度安全验证

以上是关于java list的remove方法问题的主要内容,如果未能解决你的问题,请参考以下文章

java list的remove方法问题

java中list的remove()问题

遍历list进行remove操作异常

java 的list.remove函数?

Java List --remove(int index)与remove(Object o)方法的区别

Java list.remove( )方法需要注意的地方