logo

Iterer gjennom List i Java

Lister i Java lar oss opprettholde en ordnet samling av objekter. Dupliserte elementer så vel som null-elementer kan også lagres i en liste i Java. List-grensesnittet er en del av java.util pakken, og den arver samlingsgrensesnittet. Den bevarer rekkefølgen for innsetting.

Det er flere måter å iterere over List i Java. De er omtalt nedenfor:



Metoder:

  1. Bruke loops (naiv tilnærming)
  2. Ved hjelp av Iterator
  3. Ved hjelp av Liste iterator
  4. Bruker lambda-uttrykk
  5. Ved hjelp av stream.forEach()
  6. Bruke Spliterator (Java 8 og nyere)

Metode 1-A: Enkel for loop

Hvert element kan nås ved iterasjon ved å bruke en enkel for loop. Indeksen kan nås ved å bruke indeksen som en sløyfevariabel.

Syntaks:

for (i = 0; i>

Nedenfor er et eksempel på denne metoden:



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 = ny ArrayList();  // Legge til elementer i listen // Egendefinerte inndata myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // For loop for iterasjon over Listen for (int i = 0; i< myList.size(); i++) {  // Print all elements of List  System.out.println(myList.get(i));  }  } }>

Produksjon
A B C D>

Kompleksiteten til metoden ovenfor:

Tidskompleksitet: O(n), der 'n' er størrelsen på listen.
Hjelpeplass: O(1), Konstant mellomrom brukes for sløyfevariabler (i i dette tilfellet).

Metode 1-B: Forbedret for loop

Hvert element kan nås ved iterasjon ved å bruke en forbedret for-løkke. Denne sløyfen ble introdusert i J2SE 5.0. Det er en alternativ tilnærming til å krysse for en løkke. Det gjør koden mer lesbar.



Syntaks:

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

Nedenfor er eksempelet på denne metoden:

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 = ny ArrayList();  // Legge til elementer i listen // Egendefinerte inndata myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Bruker forbedret for loop(for-each) for iterasjon for (String i : myList) { // Skriv ut alle elementene i ArrayList System.out.println(i);  } } }>

Produksjon
A B C D>

Kompleksiteten til metoden ovenfor:

Tidskompleksitet: O(n), der 'n' er størrelsen på listen.
Hjelpeplass: O(1), Konstant mellomrom brukes for sløyfevariabler (i i dette tilfellet).

fang og prøv java

Metode 1-C: Bruk en while-løkke

Iterering over en liste kan også oppnås ved å bruke en while-løkke. Kodeblokken inne i løkken kjøres til betingelsen er sann. En loop-variabel kan brukes som an indeks for å få tilgang til hvert element.

Syntaks:

while(variable>

Nedenfor er eksempelet på denne metoden:

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 = ny ArrayList();  // Legge til elementer i listen // Egendefinerte inndata myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Initialisere enhver variabel til 0 int i = 0;  // Hvis variabelverdien er mindre enn //-verdien som indikerer størrelsen på listen mens (dvs< myList.size()) {  // Print element of list  System.out.println(myList.get(i));  // Increase variable count by 1  i++;  }  } }>

Produksjon
A B C D>

Kompleksiteten til metoden ovenfor:

ekvivalenslover

Tidskompleksitet: O(n), der 'n' er størrelsen på listen.
Auxiliary Space : O(1), Konstant mellomrom brukes for sløyfevariabler (i i dette tilfellet).

Metode 2: Bruke iterator

En iterator er et objekt i Java som tillater iterasjon over elementer i en samling. Hvert element i listen kan nås ved å bruke iterator med en while-løkke.

Syntaks:

Iterator variable = list_name.iterator();>

Nedenfor er eksempelet på denne metoden:

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 = ny ArrayList();  // Legge til elementer i listen // Egendefinerte inndata myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Iterator Iteratorit = myList.iterator();  // Tilstandssjekk for elementer i List // ved hjelp av hasNext()-metoden returnerer true till // det er enkeltelement i en List while (it.hasNext()) { // Skriv ut alle elementene i List System.out.println(it) .neste());  } } }>

Produksjon
A B C D>

Kompleksiteten til metoden ovenfor:

Tidskompleksitet: O(n), der 'n' er størrelsen på listen.
Hjelpeplass: O(1), Konstant mellomrom brukes for sløyfevariabler (i i dette tilfellet).

Metode 3: Bruke List iterator

ListIterator er en iterator i Java som er tilgjengelig siden 1.2-versjonen. Det lar oss iterere elementer én etter én fra et List-implementert objekt. Den brukes til å iterere over en liste med while-løkke.

Syntaks:

ListIterator variable = list_name.listIterator();>

Nedenfor er eksempelet på denne metoden:

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 = ny ArrayList();  // Legge til elementer i listen // Egendefinerte inndata myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // List iterator ListIteratorit = myList.listIterator();  // Betingelsessjekk om det er element i List // ved å bruke hasNext() som gjelder til // det er enkeltelement i List while (it.hasNext()) { // Skriv ut alle elementene i List System.out.println( it.neste());  } } }>

Produksjon
A B C D>

Kompleksiteten til metoden ovenfor:

Tidskompleksitet: O(n), der 'n' er størrelsen på listen.
Hjelpeplass: O(1), Konstant mellomrom brukes for sløyfevariabler (i i dette tilfellet).

Metode 4: Bruke Iterable.forEach()

Denne funksjonen er tilgjengelig siden Java 8. Den kan også brukes til å iterere over en liste. Iterasjon kan gjøres ved hjelp av en lambda uttrykk.

Syntaks:

list_name.forEach(variable->{//kodeblokk})>

Nedenfor er eksempelet på denne metoden:

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 = ny ArrayList();  // Legge til elementer i listen // Egendefinerte inndata myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Lambda-uttrykk som skriver ut alle elementene i en Liste myList.forEach( (temp) -> { System.out.println(temp); });  } }>

Produksjon
A B C D>

Kompleksiteten til metoden ovenfor:

Tidskompleksitet: O(n), der 'n' er størrelsen på listen.
Hjelpeplass: O(1), Konstant mellomrom brukes for sløyfevariabler (i i dette tilfellet).

Metode 5: Bruk Stream.forEach()

Behandlingsrekkefølgen til stream().forEach() er udefinert, mens den er definert i tilfelle forEach(). Begge kan brukes til å iterere over en liste.

Syntaks:

list_name.stream.forEach(variable->{//kodeblokk})>

Nedenfor er eksempelet på denne metoden:

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 = ny ArrayList();  // Legge til elementer i listen // Egendefinerte inndata myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // stream.forEach()-metoden skriver ut // alle elementer i en List myList.stream().forEach( (temp) -> System.out.println(temp));  } }>

Produksjon
A B C D>

Kompleksiteten til metoden ovenfor:

Tidskompleksitet: O(n), der 'n' er størrelsen på listen.
Hjelpeplass: O(1), Konstant mellomrom brukes for sløyfevariabler (i i dette tilfellet).

Metoder 6: Bruke Spliterator (Java 8 og nyere)

Java 8 introduserte Spliterator grensesnitt, som står for split iterator. Det gir en måte å iterere over elementer på en mer parallellvennlig måte. En Spliterator kan fås fra forskjellige kilder, inkludert samlinger som lister. ForEachRemaining-metoden til Spliterator brukes til å krysse alle gjenværende elementer sekvensielt.

Syntaks:

Spliterator spliterator = myList.spliterator();>

Nedenfor er eksempelet på denne metoden:

midtbilde i css
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');    // Bruke Spliterator Spliteratorsplitter = myList.spliterator();  spliterator.forEachRemaining(System.out::println);  } }>

Produksjon
A B C D>

Kompleksiteten til metoden ovenfor:

Tidskompleksitet: O(n), der 'n' er størrelsen på listen.
Hjelpeplass: O(log n) eller O(1), (avhengig av egenskapene til Spliterator-implementeringen)