Iteratore Java


Iteratore Java

An Iteratorè un oggetto che può essere utilizzato per scorrere le raccolte, come ArrayList e HashSet . Si chiama "iteratore" perché "iterazione" è il termine tecnico per il ciclo.

Per utilizzare un Iterator, devi importarlo dal java.utilpacchetto.


Ottenere un iteratore

Il iterator()metodo può essere utilizzato per ottenere un Iteratorper qualsiasi raccolta:

Esempio

// Import the ArrayList class and the Iterator class
import java.util.ArrayList;
import java.util.Iterator;

public class Main {
  public static void main(String[] args) {

    // Make a collection
    ArrayList<String> cars = new ArrayList<String>();
    cars.add("Volvo");
    cars.add("BMW");
    cars.add("Ford");
    cars.add("Mazda");

    // Get the iterator
    Iterator<String> it = cars.iterator();

    // Print the first item
    System.out.println(it.next());
  }
}


Ciclo attraverso una raccolta

Per scorrere una raccolta, utilizzare i metodi hasNext()e di :next()Iterator

Esempio

while(it.hasNext()) {
  System.out.println(it.next());
}


Rimozione di elementi da una raccolta

Gli iteratori sono progettati per modificare facilmente le raccolte che attraversano. Il remove()metodo può rimuovere elementi da una raccolta durante il ciclo.

Esempio

Utilizzare un iteratore per rimuovere i numeri inferiori a 10 da una raccolta:

import java.util.ArrayList;
import java.util.Iterator;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(12);
    numbers.add(8);
    numbers.add(2);
    numbers.add(23);
    Iterator<Integer> it = numbers.iterator();
    while(it.hasNext()) {
      Integer i = it.next();
      if(i < 10) {
        it.remove();
      }
    }
    System.out.println(numbers);
  }
}

Nota: il tentativo di rimuovere gli elementi utilizzando un ciclo for o un ciclo for-ogni non funzionerebbe correttamente perché la raccolta sta cambiando dimensione nello stesso momento in cui il codice sta tentando di eseguire il ciclo.