1.List删除元素常见错误案例
public static void main(String[] args) {
List<String> platformList = new ArrayList<>();
platformList.add("博客园");
platformList.add("CSDN");
platformList.add("掘金");
for (String platform : platformList) {
if (platform.equals("博客园")) {
platformList.remove(platform);
}
}
System.out.println(platformList);
}
运行报错
是不是很懵,心想这是为什么呢?
让我们首先看下上面这段代码生成的字节码,如下所示:
由此可以看出,foreach循环在实际执行时,其实使用的是Iterator
,使用的核心方法是hasnext()
和next()
。
然后再来看下ArrayList类的Iterator是如何实现的呢?