java集合迭代器Iterator中的remove陷阱
package TestList;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;
public class TestIterator {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
Iterator t = list.iterator();
while(t.hasNext()){
if(t.next().equals("bbb")){ //使用iterator遍历list集合时,如果想要删除任一集合内元素,必须要在正好遍历倒数第二个元素的时候去删除
list.remove("ccc");
}
}
TreeSet<String> set = new TreeSet<String>();
set.add("ddd");
set.add("eee");
set.add("fff");
Iterator t1 = set.iterator();
while(t1.hasNext()){
if(t1.next().equals("fff")){ //使用iterator遍历set集合时,如果想要删除任一集合内元素,必须要在正好遍历倒数第一个元素的时候去删除
set.remove("eee");
}
}
}
}
由于List,Set在实现Iterator时存在一定的差异,因此导致了List,Set在迭代的同时删除集合元素的会有不同的表现
相关文章
解决SpringBoot使用@Value获取不到yaml中配置值的问题
在最近的开发中遇到一个问题,使用@Value获取yml文件中配置的属性时始终获取不到值,所以本文给大家详细介绍了SpringBoot使用@Value获取不到yaml中值的问题分析及解决方法,需要的朋友可以参考下2024-01-01
spring boot自定义配置时在yml文件输入有提示问题及解决方案
自定义一个配置类,然后在yml文件具体配置值时,一般不会有提示,今天小编给大家分享spring boot自定义配置时在yml文件输入有提示问题,感兴趣的朋友一起看看吧2023-10-10
关于MyBatis通用Mapper@Table注解使用的注意点
这篇文章主要介绍了关于MyBatis通用Mapper@Table注解使用的注意点,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11


最新评论