输出结果如何:
A
C
因为它会读取所有索引
ArrayList<String> g =new ArrayList<>();
g.add("A");
g.add("B");
g.add("C");
g.add("D");
for(int i=0;i<g.size();i++){
System.out.println(g.remove(i));
}
答案 0 :(得分:2)
很简单,当你到达索引2(直到B)时,尺寸减小到2,因此for循环结束那里打印直到B本身!
答案 1 :(得分:2)
你有:
0 1 2 3
A B C D
此时 g.size()
为4。
您打印A
然后将其删除。现在我们有:
0 1 2
B C D
i
是2.您打印B
并删除C(在索引1处)。
现在我们有:
0 1
C D
但是g.size()
现在是2,i == 2
,所以i < g.size()
不会保持并且循环不会执行,留下你的输出。
答案 2 :(得分:0)
for循环中的每次迭代都会删除列表中的元素..所以
i<g.size()
每次新迭代都在改变..
请记住 g 越来越短