2016-12-08 3 views
0

Wie kommt der Ausgang ist:verwirrend mit arraytlist Ausgang

A 
C 

Da alle Indizes lesen

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

die Antwort Ohne das \ n aber das B ist in der neuen Zeile – Rizkyyy

+0

Ich rate Ihnen, Elemente in der Schleife nicht direkt zu entfernen, wenn Sie Auflistungen verwenden, Iterator für den Job zu verwenden, der hilfreich wäre ... – SmashCode

+0

@SmashCode danke – Rizkyyy

Antwort

2

Sie haben:

0 1 2 3 
A B C D 

g.size() an diesem Punkt 4.

Sie drucken A und dann abziehen. Jetzt haben wir:

0 1 2 
B C D 

Und i ist 2. Sie drucken B und entfernen C (bei Index 1). Jetzt

haben wir:

0 1 
C D 

Aber g.size() ist jetzt 2 und i == 2, so i < g.size() nicht halten und die Schleife wird nicht ausgeführt, Sie mit diesem Ausgang zu verlassen.

2

Es ist einfach, die Zeit, die Sie bei Index 2 (bis B) erreichen die Größe wurde auf 2 reduziert und damit endet die for-Schleife dort druckend bis B selbst!

+0

sorry bro es ist A C – Rizkyyy

+1

Sie können die Größe auch in der Schleife überprüfen. ( \t \t) System.out.println (g.remove (i) + "::" + g.size()); \t} –

+0

dann sollte es A B C drucken, aber die Ausgabe nur A C – Rizkyyy

0

Jede Iteration in dem for-Schleife entfernt in der Liste ein Element .. so

i<g.size() 

Wird für jede neue Iteration zu ändern ..

Denken Sie daran, g wird immer kürzer