先看代码:
import java.util.ArrayList;
import java.util.List;
public class ForeachTest {
public static void main(String[] args) {
List<Integer> test = new ArrayList<>();
for (int i = 0; i < 100; i++) {
test.add(i);
}
System.out.println(test);
for (int i = 0; i < 50; i++) {
for (int t :
test) {
System.out.println(t);
test.remove(t);
break;
}
}
System.out.println(test);
}
}
完整的代码在上面,各位大佬知道为什么会出现那种运行结果吗?如果知道请指点一二,推荐个阅读资料也行,不胜感激。我 Google 了一晚上只找到了一些关于异常的资料,反编译了以后代码是这样的
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ForeachTest
{
public static void main(String[] paramArrayOfString)
{
ArrayList localArrayList = new ArrayList();
for (int i = 0; i < 100; i++) {
localArrayList.add(Integer.valueOf(i));
}
System.out.println(localArrayList);
for (i = 0; i < 50; i++)
{
Iterator localIterator = localArrayList.iterator();
if (localIterator.hasNext())
{
int j = ((Integer)localIterator.next()).intValue();
System.out.println(j);
localArrayList.remove(j);
}
}
System.out.println(localArrayList);
}
}
我也看不出端倪啊。 我搞明白了会更贴的。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.