今天无事,想要研究一下List的循环删除问题,结果发现初始化List报错。
代码如下:
List<String> list = Arrays.asList("lilei","hanmeimei","zhangsan","lisi");
log.info("删除之前的List集合 -> {}",list);
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
String item = iterator.next();
if(item.contains("m")){
iterator.remove();
}
}
log.info("删除之后的List集合 -> {}",list);
报错如下:
大家可以看到,这个意思就是这个集合不可变的集合,改变之后就会报错,有兴趣的可以去看看源码,所以需要处理一下代码,才能保证不报错,修改如下:
List<String> list = new ArrayList<>(Arrays.asList("lilei","hanmeimei","zhangsan","lisi"));
log.info("删除之前的List集合 -> {}",list);
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
String item = iterator.next();
if(item.contains("m")){
iterator.remove();
}
}
log.info("删除之后的List集合 -> {}",list);
控制台日志如下: