for loop
Hej! Jag undrar varför min samling "items" som består av objekten "Macbook" , "iphone" , "Samsung" samt "Airpods" inte har en storlek på 0 då min kod har kompilerats. När jag kompilerar koden så ser jag via contains metoden att min samling har kvar iphone samt Airpods ( men jag trodde att min for loop skulle leda till att alla mina objekt skulle raderas ).Jag skulle alltså gärna vilja få en förklaring på varför min for lop inte raderar alla objekt i samlingen samt varför just "iphone" samt "Airpods" är kvar i min samling. Tack på förhand !!! min kod är:
import java.util.*;
public class Ar {
public static void main(String[] args) {
ArrayList<String> items = new ArrayList<>();
items.add(new String("Macbook"));
items.add(new String("iphone"));
items.add(new String("Samsung"));
items.add(new String("AirPods"));
for(int i = 0; i < items.size(); i++ ) {
items.remove(i);
}
System.out.println(items.contains("AirPods"));
}
}
I java fungerar det inte att ta bort element från listan du bearbetar. Du borde få ConcurrentModificationException. I dessa fall kan du använda Iterator.
T.ex.
Iterator<String> itr = items.iterator();
while (itr.hasNext())
{
String s = itr.next();
...
itr.remove();
}
funkar.
Ursäkta, du itererade inte på listan.
När du gör items.remove(0), raderar du "Macbook".
Sen gör du items.remove(1), som tar bort "Samsung",
Sen items.remove(2), och items.remove(3) händer inte, därför att items.size() == 2.
Jag fattar dock inte varför iphone ( dvs objektet i index 1) samt Airpods ( index 3 ) är kvar :(
Efter första iterationen blir "iphone" element 0 och du "hoppar över" den.
Du tar bort en, du hoppar över en, du tar bort en, du hoppar över en,.....
Det här skulle ta bort alla:
for(; 0 < items.size(); ) {
items.remove(0);
}
Denhär koden:
for( int i = 0; i < 4; i++) {
System.out.println(i);
}
// Den koden ovan printar
1
2
3
fattar inte vad som skiljer sig mellan denna koden och den koden jag behöver hjälp med... hur "hoppar jag över" Tack för att du hjälper mig förresten det uppkattas
På början:
items : ["Macbook","iphone","Samsung","AirPods"]
första iterationen: items.remove(0) tar bort "Macbook"
Nu items : ["iphone","Samsung","AirPods"]
andra iterationen: items.remove(1) tar bort "Samsung"
Nu items : ["iphone","AirPods"]
Och for slutar här därför att i==2, och items.size()==2
TACK TACK TACK!!!!!