我是靠谱客的博主 单身河马,最近开发中收集的这篇文章主要介绍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方法问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部