logo

Iterați prin Listă în Java

Listele în Java ne permit să menținem o colecție ordonată de obiecte. Elementele duplicate, precum și elementele nule pot fi, de asemenea, stocate într-o listă în Java. Interfața Listă face parte din java.util pachet și moștenește interfața Collection. Păstrează ordinea de inserare.

Există mai multe moduri de a repeta peste Listă în Java. Ele sunt discutate mai jos:



Metode:

  1. Utilizarea buclelor (abordare naivă)
  2. Folosind Iterator
  3. Folosind Iterator de listă
  4. Folosind expresia lambda
  5. Folosind stream.forEach()
  6. Folosind Spliterator (Java 8 și versiuni ulterioare)

Metoda 1-A: simplă pentru buclă

Fiecare element poate fi accesat prin iterație folosind o buclă simplă for. Indexul poate fi accesat folosind indexul ca variabilă de buclă.

Sintaxă:

for (i = 0; i>

Mai jos este un exemplu al acestei metode:



centrarea unei imagini în css
Java
// Java Program to iterate over List // Using simple for loop // Importing all classes of // java.util package import java.util.*; // CLass class GFG {  // Main driver method  public static void main(String args[])  {  // Creating a ArrayList  ListmyList = noua ArrayList();  // Adăugarea elementelor în listă // Intrări personalizate myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // bucla For pentru iterare peste Lista for (int i = 0; i< myList.size(); i++) {  // Print all elements of List  System.out.println(myList.get(i));  }  } }>

Ieșire
A B C D>

Complexitatea metodei de mai sus:

Complexitatea timpului: O(n), unde „n” este dimensiunea listei.
Spațiu auxiliar: O(1), spațiul constant este utilizat pentru variabilele buclei (i în acest caz).

Metoda 1-B: îmbunătățită pentru buclă

Fiecare element poate fi accesat prin iterație folosind o buclă for îmbunătățită. Această buclă a fost introdusă în J2SE 5.0. Este o abordare alternativă pentru a parcurge bucla for. Face codul mai lizibil.



Sintaxă:

for(data_type variable : List_name) { // Body of the loop. // Each element can be accessed using variable. }>

Mai jos este exemplul acestei metode:

Java
// Java Program to Iterate over a List // using enhanced for loop (for-each) // Importing all classes of // java.util package import java.util.*; // Class class GFG {  // Main driver method  public static void main(String args[])  {  // Creating an Arraylist  ListmyList = noua ArrayList();  // Adăugarea elementelor la Listă // Intrări personalizate myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Folosind bucla îmbunătățită pentru (for-each) pentru iterație pentru (String i : myList) { // Imprimă toate elementele ArrayList System.out.println(i);  } } }>>>  
Ieșire
A B C D>

Complexitatea metodei de mai sus:

Complexitatea timpului: O(n), unde „n” este dimensiunea listei.
Spațiu auxiliar: O(1), spațiul constant este utilizat pentru variabilele buclei (i în acest caz).

Metoda 1-C: Folosind o buclă while

Iterarea peste o listă poate fi realizată și folosind o buclă while. Blocul de cod din interiorul buclei se execută până când condiția este adevărată. O variabilă buclă poate fi folosită ca un index pentru a accesa fiecare element.

Sintaxă:

Mai jos este exemplul acestei metode:

Java
// Java Program to iterate over a List // using while loop // Importing all classes of // java.util package import java.util.*; // Class class GFG {  // Main driver method  public static void main(String args[])  {  // Creating an ArrayList  ListmyList = noua ArrayList();  // Adăugarea elementelor la Listă // Intrări personalizate myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Inițializarea oricărei variabile la 0 int i = 0;  // Dacă valoarea variabilei este mai mică decât // valoarea care indică dimensiunea Listă în timp ce (i< myList.size()) {  // Print element of list  System.out.println(myList.get(i));  // Increase variable count by 1  i++;  }  } }>

Ieșire
A B C D>

Complexitatea metodei de mai sus:

Complexitatea timpului: O(n), unde „n” este dimensiunea listei.
Spațiu auxiliar : O(1), Spațiul constant este utilizat pentru variabilele buclei (i în acest caz).

Metoda 2: Utilizarea iteratorului

Un iterator este un obiect în Java care permite iterarea asupra elementelor unei colecții. Fiecare element din listă poate fi accesat folosind un iterator cu o buclă while.

Sintaxă:

Iterator variable = list_name.iterator();>

Mai jos este exemplul acestei metode:

Java
// Java Program to iterate over the list // using iterator // Importing all classes of // java.util package import java.util.*; // Class class GFG {  // Main driver method  public static void main(String args[])  {  // Creating an ArrayList  ListmyList = noua ArrayList();  // Adăugarea elementelor la Listă // Intrări personalizate myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Iterator Iteratorit = myList.iterator();  // Verificarea condiției pentru elementele din Listă // folosind metoda hasNext() returnând adevărat până // există un singur element într-o Listă while (it.hasNext()) { // Imprimă toate elementele List System.out.println(it .Următorul());  } } }>>>  
Ieșire
A B C D>

Complexitatea metodei de mai sus:

Complexitatea timpului: O(n), unde „n” este dimensiunea listei.
Spațiu auxiliar: O(1), spațiul constant este utilizat pentru variabilele buclei (i în acest caz).

Metoda 3: Utilizarea iteratorului Listă

ListIterator este un iterator în Java care este disponibil începând cu versiunea 1.2. Ne permite să iterăm elementele unul câte unul dintr-un obiect implementat List. Este folosit pentru a itera o listă folosind bucla while.

Sintaxă:

Mai jos este exemplul acestei metode:

Java
// Java program to iterate over a list // using ListIterator import java.util.*; // Class class GFG {  // Main driver method  public static void main(String args[])  {  // Creating an ArrayList  ListmyList = noua ArrayList();  // Adăugarea elementelor la Listă // Intrări personalizate myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Iterator listă ListIteratorit = myList.listIterator();  // Verificați starea dacă există element în Listă // folosind hasNext() care este valabil până // există un singur element în Listă în timp ce (it.hasNext()) { // Imprimați toate elementele List System.out.println( it.next());  } } }>>>  
Ieșire
A B C D>

Complexitatea metodei de mai sus:

Complexitatea timpului: O(n), unde „n” este dimensiunea listei.
Spațiu auxiliar: O(1), spațiul constant este utilizat pentru variabilele buclei (i în acest caz).

Metoda 4: Utilizarea Iterable.forEach()

Această caracteristică este disponibilă începând cu Java 8. Poate fi folosită și pentru a itera o listă. Iterația se poate face folosind A expresie lambda.

Sintaxă:

Mai jos este exemplul acestei metode:

operator condițional în java
Java
// Java Program to iterate over a List // using forEach() // Importing all classes of // java.util method import java.util.*; // Class class GFG {  // Main driver method  public static void main(String args[])  {  // Creating an ArrayList  ListmyList = noua ArrayList();  // Adăugarea elementelor la Listă // Intrări personalizate myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Expresia Lambda imprimă toate elementele dintr-o Listă myList.forEach( (temp) -> { System.out.println(temp); });  } }>>>  
Ieșire
A B C D>

Complexitatea metodei de mai sus:

Complexitatea timpului: O(n), unde „n” este dimensiunea listei.
Spațiu auxiliar: O(1), spațiul constant este utilizat pentru variabilele buclei (i în acest caz).

Metoda 5: Utilizarea Stream.forEach()

Ordinea de procesare a stream().forEach() este nedefinită, în timp ce în cazul forEach(), este definită. Ambele pot fi folosite pentru a repeta o listă.

Sintaxă:

// Java Program iterating over a List // using stream.forEach() method // Importing all classes of // java.util method import java.util.*; // Class class GFG {  // Main driver method  public static void main(String args[])  {  // Creating an ArrayList  ListmyList = noua ArrayList();  // Adăugarea elementelor la Listă // Intrări personalizate myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // metoda stream.forEach() tipărește // toate elementele din interiorul unei liste myList.stream().forEach( (temp) -> System.out.println(temp));  } }>>>  
Ieșire
A B C D>

Complexitatea metodei de mai sus:

Complexitatea timpului: O(n), unde „n” este dimensiunea listei.
Spațiu auxiliar: O(1), spațiul constant este utilizat pentru variabilele buclei (i în acest caz).

Metode 6: Utilizarea Spliterator (Java 8 și versiuni ulterioare)

Java 8 a introdus Spliterator interfață, care înseamnă split iterator. Oferă o modalitate de a repeta elementele într-un mod mai prietenos cu paralelele. Un Spliterator poate fi obținut din diverse surse, inclusiv colecții precum liste. Metoda forEachRemaining a lui Spliterator este folosită pentru a parcurge toate elementele rămase secvenţial.

Sintaxă:

Mai jos este exemplul acestei metode:

Java
// Java Program iterating over a List // using Spliterator import java.util.List; import java.util.Spliterator; public class ListIteration {  public static void main(String[] args) {  // List of String  ListmyList = List.of('A', 'B', 'C','D');    // Folosind Spliterator Spliteratorspliterator = myList.spliterator();  spliterator.forEachRemaining(System.out::println);  } }>>>  
Ieșire Complexitatea metodei de mai sus:

Complexitatea timpului: O(n), unde „n” este dimensiunea listei.
Spațiu auxiliar: O(log n) sau O(1), (în funcție de caracteristicile implementării Spliterator)