logo

Iterujte cez zoznam v jazyku Java

Zoznamy v jazyku Java nám umožňujú udržiavať usporiadanú kolekciu objektov. Duplicitné prvky, ako aj nulové prvky môžu byť tiež uložené v zozname v jazyku Java. Rozhranie Zoznam je súčasťou java.util balík a zdedí rozhranie kolekcie. Zachováva poradie vkladania.

Existuje niekoľko spôsobov, ako iterovať cez zoznam v jazyku Java. O nich sa diskutuje nižšie:



Metódy:

  1. Používanie slučiek (naivný prístup)
  2. Použitím Iterátor
  3. Použitím Iterátor zoznamu
  4. Použitie výrazu lambda
  5. Použitím stream.forEach()
  6. Použitie Spliterator (Java 8 a novšia verzia)

Metóda 1-A: Jednoduchý cyklus for

Ku každému prvku je možné pristupovať iteráciou pomocou jednoduchého cyklu for. K indexu je možné pristupovať pomocou indexu ako premennej cyklu.

Syntax:

for (i = 0; i>

Nižšie je uvedený príklad tejto metódy:



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 = nový ArrayList();  // Pridávanie prvkov do zoznamu // Vlastné vstupy myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Cyklus For na iteráciu cez List for (int i = 0; i< myList.size(); i++) {  // Print all elements of List  System.out.println(myList.get(i));  }  } }>

Výkon
A B C D>

Zložitosť vyššie uvedenej metódy:

Časová zložitosť: O(n), kde „n“ je veľkosť zoznamu.
Pomocný priestor: O(1), Konštantný priestor sa používa pre premenné cyklu (v tomto prípade i).

Metóda 1-B: Vylepšená slučka for

Ku každému prvku je možné pristupovať iteráciou pomocou vylepšenej slučky for. Táto slučka bola predstavená v J2SE 5.0. Je to alternatívny prístup k prechodu cez slučku for. Vďaka tomu je kód čitateľnejší.



Syntax:

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

Nižšie je uvedený príklad tejto metódy:

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 = nový ArrayList();  // Pridanie prvkov do zoznamu // Vlastné vstupy myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Použitie vylepšenej slučky for (for-each) na iteráciu for (String i : myList) { // Tlač všetkých prvkov ArrayList System.out.println(i);  } } }>

Výkon
A B C D>

Zložitosť vyššie uvedenej metódy:

Časová zložitosť: O(n), kde „n“ je veľkosť zoznamu.
Pomocný priestor: O(1), Konštantný priestor sa používa pre premenné cyklu (v tomto prípade i).

Metóda 1-C: Použitie slučky while

Iteráciu cez zoznam je možné dosiahnuť aj pomocou cyklu while. Blok kódu vo vnútri cyklu sa vykonáva, kým podmienka nie je pravdivá. Premenná slučky môže byť použitá ako an index pre prístup ku každému prvku.

Syntax:

while(variable>

Nižšie je uvedený príklad tejto metódy:

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 = nový ArrayList();  // Pridanie prvkov do zoznamu // Vlastné vstupy myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Inicializácia ľubovoľnej premennej na 0 int i = 0;  // Ak je hodnota premennej menšia ako // hodnota označujúca veľkosť zoznamu while (i< myList.size()) {  // Print element of list  System.out.println(myList.get(i));  // Increase variable count by 1  i++;  }  } }>

Výkon
A B C D>

Zložitosť vyššie uvedenej metódy:

Časová zložitosť: O(n), kde „n“ je veľkosť zoznamu.
Pomocný priestor : O(1), konštantný priestor sa používa pre premenné cyklu (v tomto prípade i).

Metóda 2: Použitie iterátora

Iterátor je objekt v jazyku Java, ktorý umožňuje iteráciu prvkov kolekcie. Ku každému prvku v zozname je možné pristupovať pomocou iterátora so slučkou while.

Syntax:

Iterator variable = list_name.iterator();>

Nižšie je uvedený príklad tejto metódy:

parseint java
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 = nový ArrayList();  // Pridanie prvkov do zoznamu // Vlastné vstupy myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Iterátor Iterátorit = myList.iterator();  // Kontrola stavu prvkov v zozname // pomocou metódy hasNext() vracajúcej true, kým // v zozname nie je jeden prvok while (it.hasNext()) { // Vytlačí všetky prvky zoznamu System.out.println(it .Ďalšie());  } } }>

Výkon
A B C D>

Zložitosť vyššie uvedenej metódy:

Časová zložitosť: O(n), kde „n“ je veľkosť zoznamu.
Pomocný priestor: O(1), Konštantný priestor sa používa pre premenné cyklu (v tomto prípade i).

Metóda 3: Použitie iterátora zoznamu

ListIterator je iterátor v jazyku Java, ktorý je dostupný od verzie 1.2. Umožňuje nám iterovať prvky jeden po druhom z objektu implementovaného v zozname. Používa sa na iteráciu zoznamu pomocou cyklu while.

Syntax:

ListIterator variable = list_name.listIterator();>

Nižšie je uvedený príklad tejto metódy:

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 = nový ArrayList();  // Pridanie prvkov do zoznamu // Vlastné vstupy myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Iterátor zoznamu ListIteratorit = myList.listIterator();  // Kontrola stavu, či je prvok v zozname // pomocou hasNext(), ktorý platí, kým // v zozname nie je jeden prvok while (it.hasNext()) { // Vytlačí všetky prvky zoznamu System.out.println( it.next());  } } }>

Výkon
A B C D>

Zložitosť vyššie uvedenej metódy:

Časová zložitosť: O(n), kde „n“ je veľkosť zoznamu.
Pomocný priestor: O(1), Konštantný priestor sa používa pre premenné cyklu (v tomto prípade i).

Metóda 4: Použitie Iterable.forEach()

Táto funkcia je dostupná od Java 8. Dá sa použiť aj na iteráciu cez zoznam. Iteráciu je možné vykonať pomocou a lambda výraz.

Syntax:

list_name.forEach(variable->{//blok kódu})>

Nižšie je uvedený príklad tejto metódy:

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 = nový ArrayList();  // Pridanie prvkov do zoznamu // Vlastné vstupy myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Lambda výraz vytlačí všetky prvky v zozname myList.forEach( (temp) -> { System.out.println(temp); });  } }>

Výkon
A B C D>

Zložitosť vyššie uvedenej metódy:

Časová zložitosť: O(n), kde „n“ je veľkosť zoznamu.
Pomocný priestor: O(1), Konštantný priestor sa používa pre premenné cyklu (v tomto prípade i).

Metóda 5: Použitie Stream.forEach()

Poradie spracovania stream().forEach() nie je definované, zatiaľ čo v prípade forEach() je definované. Obe sa dajú použiť na iteráciu cez zoznam.

Syntax:

list_name.stream.forEach(variable->{//blok kódu})>

Nižšie je uvedený príklad tejto metódy:

Java
// 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 = nový ArrayList();  // Pridanie prvkov do zoznamu // Vlastné vstupy myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // metóda stream.forEach() vypíše // všetky prvky v zozname myList.stream().forEach( (temp) -> System.out.println(temp));  } }>

Výkon
A B C D>

Zložitosť vyššie uvedenej metódy:

Časová zložitosť: O(n), kde „n“ je veľkosť zoznamu.
Pomocný priestor: O(1), Konštantný priestor sa používa pre premenné cyklu (v tomto prípade i).

Metódy 6: Použitie Spliterator (Java 8 a novšia)

Java 8 predstavila Rozdeľovač rozhranie, čo znamená split iterator. Poskytuje spôsob iterácie prvkov spôsobom, ktorý je prijateľnejší pre paralely. Spliterator je možné získať z rôznych zdrojov vrátane zbierok, ako sú zoznamy. Metóda forEachRemaining Spliterator sa používa na postupné prechádzanie všetkými zostávajúcimi prvkami.

Syntax:

Spliterator spliterator = myList.spliterator();>

Nižšie je uvedený príklad tejto metódy:

java otvorený súbor
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');    // Použitie Spliterator Spliteratorspliterator = myList.spliterator();  spliterator.forEachRemaining(System.out::println);  } }>

Výkon
A B C D>

Zložitosť vyššie uvedenej metódy:

Časová zložitosť: O(n), kde „n“ je veľkosť zoznamu.
Pomocný priestor: O(log n) alebo O(1), (v závislosti od charakteristík implementácie Spliterator)