Iterator i iterator.next() - niechciane przeskakiwanie do następnego elementu

0

Witam, mam krótki programik- sprawdzam sobie działanie Kolekcji. I jedna rzecz mnie zdziwiła i nie potrafię jej zrozumieć. ArrayListę wypełniam liczbami od 0 do 10. Następnie definiuję iterator i przechodzę w while iteratorem przez arraylistę. W środku while sprawdzam też czy liczba ta jest równa 3, jeżeli tak to chcę ją usunąć. Problem w tym, że iterator wypisuje mi tylko 5liczb z dziesięciu(co drugą) a winowajcą jest ten if "if(iter.next()==3)". Dlaczego ifie gdy chcę sprawdzić czy jest równy 3 iterator przeskakuje do następnego elementu? Czy dzieje się coś innego?

	
public static void main(String[] args) {

		Random rand=new Random();
		
		List<Integer> integerList= new ArrayList<Integer>();
		Iterator<Integer> iter;
		 
		for(int i=0; i<10; i++)
			integerList.add(rand.nextInt(10));
		
		iter= integerList.iterator();

		while(iter.hasNext())
		{
			System.out.println(iter.next());
			if(iter.next()==3)
				iter.remove();
                 }
}
1

Wywołanie metody next zawsze powoduje przejście do następnego elementu.

        while(iter.hasNext())
        {
            int n = iter.next();
            System.out.println(n);
            if(n == 3)
                iter.remove();
}
0

ahaa :)) ok, troszkę inaczej to zrozumiałem. Dzięki za szybką odpowiedź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1