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:
- Utilizarea buclelor (abordare naivă)
- Folosind Iterator
- Folosind Iterator de listă
- Folosind expresia lambda
- Folosind stream.forEach()
- 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 cssJava
// 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ă:
// 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ă:
// 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ă:
operator condițional în javaJava
// 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ă:
// 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 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)