与arraytlist输出混淆

时间:2016-12-08 09:31:50

标签: java

输出结果如何:

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));
}

3 个答案:

答案 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 越来越短