遍历List的同时清空元素
2017-03-29 18:29
225 查看
今天调试代码的时候发现之前同事写的一段代码用于清空list集合的数据。
if(list !=null && !list.isEmpty()){
for (int i=0;i<=list.size();i++) {
list.remove(i);
}
}细心的童鞋们可以一眼就看出了问题。
当时我改成list.size()-1 或者i<list.size(), 以为万事大吉了~~~~~~~~~~
正要提交代码时,突然灵机一动感觉不对啊。大家思考下问题在哪里呢。。。。。。。
问题在: i++ 在增加,list的大小在减少,会出现数组越界异常的(这里可以我表达不太恰当,反正是有错误)。
然后我就改:
if(list !=null && !list.isEmpty()){
int a = list.size();
for (int i=0;i<=a-1;i++) {
if(list.isEmpty()){
break;
}
list.remove(i);
i--;
}
}
i++ 然后在i-- 这个吃饱了没事干嘛,再优化一下:
if(list !=null && !list.isEmpty()){
for (int i=0;i<=list.size()-1;) {
list.remove(i);
}
}哈哈哈这下看是完美了。
====================================================
其实list.clear() 直接就搞定了。
心得:其实程序是慢慢调试出来,慢慢优化出来的。
if(list !=null && !list.isEmpty()){
for (int i=0;i<=list.size();i++) {
list.remove(i);
}
}细心的童鞋们可以一眼就看出了问题。
当时我改成list.size()-1 或者i<list.size(), 以为万事大吉了~~~~~~~~~~
正要提交代码时,突然灵机一动感觉不对啊。大家思考下问题在哪里呢。。。。。。。
问题在: i++ 在增加,list的大小在减少,会出现数组越界异常的(这里可以我表达不太恰当,反正是有错误)。
然后我就改:
if(list !=null && !list.isEmpty()){
int a = list.size();
for (int i=0;i<=a-1;i++) {
if(list.isEmpty()){
break;
}
list.remove(i);
i--;
}
}
i++ 然后在i-- 这个吃饱了没事干嘛,再优化一下:
if(list !=null && !list.isEmpty()){
for (int i=0;i<=list.size()-1;) {
list.remove(i);
}
}哈哈哈这下看是完美了。
====================================================
其实list.clear() 直接就搞定了。
心得:其实程序是慢慢调试出来,慢慢优化出来的。
相关文章推荐
- 遍历List集合同时删除元素的正确方法
- 【C#】遍历List列表的同时,移除访问到的元素
- 遍历List 同时 remove 元素
- 遍历List 同时 remove 元素
- Python中不用循环同时遍历两个数组并进行对应元素的处理并进行删除
- 如何正确遍历删除List中的元素,你会吗?
- <c:foreach>同时遍历两个List的方法
- 如何正确遍历删除List中的元素,你会吗?
- 遍历可变数组的同时删除元素
- java遍历List时动态添加和删除元素
- 加强型无穷集合:InfiniteList<T>,可指定遍历方向和偏移量,只要集合有元素并且偏移量不为 0,将永远遍历下去。
- 如何正确遍历删除List中的元素,你会吗?
- Java - List遍历、判断、删除元素时的陷阱
- List遍历 删除元素
- 正确遍历删除List中的元素
- Python遍历列表的方法enumerate,以及清空list方法
- Java集合之List遍历找到匹配元素删除方法总结
- C#遍历List并删除某个元素的方法
- Java 循环遍历删除set list中的元素
- java中循环遍历删除List和Set集合中元素的方法(推荐)