Iterare una lista collegata in Java

Rashmi Patidar 12 ottobre 2023
  1. Scorri la lista collegato utilizzando il cicli for in Java
  2. Scorri la lista collegato utilizzando il cicli for migliorato in Java
  3. Scorri la lista collegato utilizzando il cicli while
  4. Iterare la lista collegato utilizzando la classe Iterator in Java
  5. Iterazione della lista collegato utilizzando Java 8 Streams
Iterare una lista collegata in Java

Un elenco collegato è una raccolta lineare e ordinata di elementi di dati. La disposizione degli elementi è ubiquitaria o casuale nella memoria. La struttura dei dati della lista collegato è collegata utilizzando i nodi. Il Nodo contiene il campo dati e il collegamento di riferimento che sono posizioni di memoria dell’elemento successivo nella sequenza.

Memorizziamo gli elementi della lista collegato in posizioni di memoria non contigue e l’ultimo nodo contiene un puntatore al riferimento nullo.

Esistono molti modi per scorrere una lista collegato. Ecco alcuni modi menzionati di seguito.

Scorri la lista collegato utilizzando il cicli for in Java

La classe LinkedList viene istanziata utilizzando la parola chiave new nell’esempio di codice seguente. Il metodo add() della classe LinkedList aggiunge un elemento alla lista. Il metodo add aggiunge l’elemento specificato alla fine di questo elenco. Questo metodo è equivalente al metodo addLast. Il metodo restituisce true quando l’elemento viene aggiunto con successo alla lista.

Dopo la creazione della lista, usiamo il cicli for per l’iterazione su di essa. Nel codice seguente, int i=0 è un’istanza della variabile counter. Utilizza una condizione che indichi che la variabile deve essere inferiore alla dimensione della lista. E la dimensione della lista viene calcolata usando il metodo size(). Alla fine, il valore della variabile aumenta di uno. Questo processo completo verrà eseguito fino a quando il valore della variabile non supera la dimensione della lista.

package linkedList;

import java.util.LinkedList;

public class IterateLinkedListUsingForLoop {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    System.out.println("Iterating the list using for-loop");
    for (int i = 0; i < list.size(); i++) {
      System.out.println(list.get(i));
    }
  }
}

Il programma precedente genera l’output come indicato di seguito.

Iterating the list using for-loop
First
Second

Scorri la lista collegato utilizzando il cicli for migliorato in Java

Il cicli for migliorato viene anche chiamato loop for-each ed è un tipo di cicli for.

Nel codice seguente, dovremmo creare un’istanza di un oggetto elenco collegato. Quindi dovrebbe aggiungere alcuni elementi (diciamo oggetti String) ad esso. Ora per l’iterazione, in questo caso useremo for-each.

package linkedList;

import java.util.LinkedList;

public class IteratingLinkedListUsingForEach {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    for (String temp : list) {
      System.out.println(temp);
    }
  }
}

L’output del programma è lo stesso del primo programma.

Scorri la lista collegato utilizzando il cicli while

La creazione di istanze e l’aggiunta di elementi al processo di quotazione saranno simili in tutti i modi menzionati.

Nell’esempio seguente, il valore della variabile counter viene istanziato a 0 al di fuori del cicli while. La sintassi del cicli while non ha spazio per l’istanza. Ora applica la condizione. Questo controlla se la variabile è inferiore alla dimensione della lista data. Restituirà true e la funzione println() verrà eseguita. Dopodiché, dovremmo incrementare la variabile counter. Il processo si ripeterà finché la variabile non diventerà più grande della dimensione della lista.

package linkedList;

public class IteratingLinkedListUsingWhileLoop {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    int i = 0;
    while (i < list.size()) {
      System.out.println(list.get(i));
      i++;
    }
  }
}

Iterare la lista collegato utilizzando la classe Iterator in Java

Un Iteratore è una classe che lavora sul loop di oggetti Collections. Questi sono Array, ArrayList, LinkedList e così via. Lo chiamiamo un Iterator in quanto esegue il bucle sugli oggetti della raccolta. Si dovrebbero usare metodi nella classe Iterator per iterare sugli oggetti Collections.

Usiamo il metodo iterator() per ottenere un Iterator per qualsiasi raccolta. Il metodo hasNext controlla se la lista ha più elementi. Restituisce true se l’iterazione ha più elementi presenti.

Il metodo next ottiene l’elemento successivo nel bucle. Restituisce il prossimo oggetto presente nell’iterazione e lancia NoSuchElementException se nessun elemento è presente nella lista.

Il codice seguente mostra la classe Iterator ei suoi metodi.

package linkedList;

public class IteratingLinkedListUsingIterator {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) {
      System.out.println(iterator.next());
    }
  }
}

Iterazione della lista collegato utilizzando Java 8 Streams

Un stream si forma sempre su un oggetto Collezione. Nel programma seguente, usiamo il metodo stream per lo stesso. Le funzioni vengono applicate sulla catena di funzioni di flusso. Il forEach è un’operazione di terminale. Significa che non è possibile eseguire alcuna operazione dopo una funzione terminale. Ci vuole un flusso consumatore, e questo flusso non emette elementi ma li consuma.

Il codice seguente mostra l’uso dei flussi Java 8 e la loro funzione per scorrere la lista.

package linkedList;

public class IteratingLinkedListUsingStreams {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    list.stream().forEach((element) -> { System.out.println(element); });
  }
}
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Articolo correlato - Java List