概述
为什么80%的码农都做不了架构师?>>>
-
如果使用普通for循环直接删除会出现IndexOutOfBoundsException异常,非法索引。
ArrayList<String> list = new ArrayList<String>(); list.add("1"); list.add("2"); list.add("2"); list.add("2"); list.add("3"); list.add("4"); list.add("5"); // 这样做肯定抛异常,非法访问数据越界 int len = list.size(); for (int i = 0; i < len; i++) { if("1".equals(list.get(i))){ list.remove(i); } } //Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4, Size: 4 //改进后,删除元素后更新List长度,更新循环下标。但是这样的可读性很差。鬼知道你在写什么。。。 int len = list.size(); for (int i = 0; i < len; i++) { if("1".equals(list.get(i))){ list.remove(i); --len; --i; } } //另外一种方式 Iterator<String> sListIterator = list.iterator(); while(sListIterator.hasNext()){ String e = sListIterator.next(); //注意了 if(e.equals("1")){ sListIterator.remove(); } }
作者水平有限,下一章分析源码。而且这两种方式存在线程安全问题。。。
转载于:https://my.oschina.net/z201/blog/1239961
最后
以上就是冷酷毛衣为你收集整理的如何正确的在一个循环中删除ArrayList中的元素。的全部内容,希望文章能够帮你解决如何正确的在一个循环中删除ArrayList中的元素。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复