Java-luetteloiden avulla voimme ylläpitää järjestettyä objektikokoelmaa. Päällekkäisiä elementtejä sekä nollaelementtejä voidaan myös tallentaa luetteloon Javassa. List-käyttöliittymä on osa java.util paketti ja se perii Collection-rajapinnan. Se säilyttää lisäysjärjestyksen.
Javassa on useita tapoja iteroida Listissä. Niitä käsitellään alla:
Menetelmät:
- Silmukoiden käyttö (naiivi lähestymistapa)
- Käyttämällä Iteraattori
- Käyttämällä Lista iteraattori
- Lambda-lausekkeen käyttö
- Käyttämällä stream.forEach()
- Spliteratorin käyttäminen (Java 8 ja uudemmat)
Menetelmä 1-A: Yksinkertainen silmukalle
Jokaista elementtiä voidaan käyttää iteroimalla käyttämällä yksinkertaista for-silmukkaa. Indeksiin pääsee käsiksi käyttämällä indeksiä silmukkamuuttujana.
Syntaksi:
for (i = 0; i>
Alla on esimerkki tästä menetelmästä:
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 = uusi ArrayList(); // Elementtien lisääminen luetteloon // Mukautetut syötteet myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // Silmukalle, jolla iteroidaan List for (int i = 0; i< myList.size(); i++) { // Print all elements of List System.out.println(myList.get(i)); } } }> Lähtö
A B C D>
Yllä olevan menetelmän monimutkaisuus:
Aika monimutkaisuus: O(n), missä 'n' on luettelon koko.
Aputila: O(1), Silmukkamuuttujille (tässä tapauksessa i) käytetään vakioavaruutta.
Tapa 1-B: Parannettu silmukalle
Jokaista elementtiä voidaan käyttää iteroimalla käyttämällä parannettua silmukkaa. Tämä silmukka otettiin käyttöön J2SE 5.0:ssa. Se on vaihtoehtoinen tapa kulkea for a silmukan läpi. Se tekee koodista luettavamman.
Syntaksi:
for(data_type variable : List_name) { // Body of the loop. // Each element can be accessed using variable. }>Alla on esimerkki tästä menetelmästä:
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 = uusi ArrayList(); // Elementtien lisääminen listaan // Mukautetut syötteet myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // Enhanced for loop(for-each) käyttäminen iteraatiossa kohteelle (String i : myList) { // Tulosta kaikki ArrayList-elementit System.out.println(i); } } }> Lähtö
A B C D>
Yllä olevan menetelmän monimutkaisuus:
Aika monimutkaisuus: O(n), missä 'n' on luettelon koko.
Aputila: O(1), Silmukkamuuttujille (tässä tapauksessa i) käytetään vakioavaruutta.
Menetelmä 1-C: Käytä while-silmukkaa
Listan iterointi voidaan saavuttaa myös while-silmukalla. Silmukan sisällä oleva koodilohko suoritetaan, kunnes ehto on tosi. Silmukkamuuttujaa voidaan käyttää an hakemistoon päästäksesi jokaiseen elementtiin.
Syntaksi:
while(variable>
Alla on esimerkki tästä menetelmästä:
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 = uusi ArrayList(); // Elementtien lisääminen listaan // Mukautetut syötteet myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // Minkä tahansa muuttujan alustaminen arvoon 0 int i = 0; // Jos muuttujan arvo on pienempi kuin // arvo ilmaisee listan koon while (i< myList.size()) { // Print element of list System.out.println(myList.get(i)); // Increase variable count by 1 i++; } } }> Lähtö
A B C D>
Yllä olevan menetelmän monimutkaisuus:
Aika monimutkaisuus: O(n), missä 'n' on luettelon koko.
Aputila : O(1), Silmukkamuuttujille (tässä tapauksessa i) käytetään vakioavaruutta.
Tapa 2: Iteraattorin käyttö
Iteraattori on Java-objekti, joka mahdollistaa iteroinnin kokoelman elementtien yli. Jokaiseen luettelon elementtiin pääsee käsiksi iteraattorilla, jossa on while-silmukka.
Syntaksi:
Iterator variable = list_name.iterator();>
Alla on esimerkki tästä menetelmästä:
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 = uusi ArrayList(); // Elementtien lisääminen listaan // Mukautetut syötteet myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // Iteraattori Iteraattoriit = myList.iterator(); // Listan elementtien ehtotarkistus // hasNext()-metodilla palauttaen true till // Listassa on yksi elementti while (it.hasNext()) { // Tulosta kaikki listan elementit System.out.println(it .Seuraava()); } } }> Lähtö
A B C D>
Yllä olevan menetelmän monimutkaisuus:
Aika monimutkaisuus: O(n), missä 'n' on luettelon koko.
Aputila: O(1), Silmukkamuuttujille (tässä tapauksessa i) käytetään vakioavaruutta.
Tapa 3: List-iteraattorin käyttäminen
ListIterator on Java-iteraattori, joka on saatavilla 1.2-versiosta lähtien. Sen avulla voimme iteroida elementtejä yksitellen List-toteutetun objektin. Sitä käytetään iteroimaan luetteloa käyttäen while-silmukkaa.
Syntaksi:
ListIterator variable = list_name.listIterator();>
Alla on esimerkki tästä menetelmästä:
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 = uusi ArrayList(); // Elementtien lisääminen listaan // Mukautetut syötteet myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // Listaiteraattori ListIteratorit = myList.listIterator(); // Ehto tarkista onko listassa elementtiä // komennolla hasNext() joka pätee siihen asti // Listassa on yksi elementti while (it.hasNext()) { // Tulosta listan kaikki elementit System.out.println( se.seuraava()); } } }> Lähtö
A B C D>
Yllä olevan menetelmän monimutkaisuus:
Aika monimutkaisuus: O(n), missä 'n' on luettelon koko.
Aputila: O(1), Silmukkamuuttujille (tässä tapauksessa i) käytetään vakioavaruutta.
Tapa 4: Iterable.forEach()
Tämä ominaisuus on saatavilla Java 8:sta lähtien. Sitä voidaan käyttää myös iterointiin listan yli. Iterointi voidaan tehdä käyttämällä a lambda ilmaisu.
Syntaksi:
list_name.forEach(variable->{//koodilohko})>Alla on esimerkki tästä menetelmästä:
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 = uusi ArrayList(); // Elementtien lisääminen listaan // Mukautetut syötteet myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // Lambdalauseke tulostaa kaikki listan elementit myList.forEach( (temp) -> { System.out.println(temp); }); } }> Lähtö
A B C D>
Yllä olevan menetelmän monimutkaisuus:
Aika monimutkaisuus: O(n), missä 'n' on luettelon koko.
Aputila: O(1), Silmukkamuuttujille (tässä tapauksessa i) käytetään vakioavaruutta.
Tapa 5: Stream.forEach()
Kohteen stream().forEach() käsittelyjärjestys on määrittelemätön, kun taas forEach():n tapauksessa se on määritelty. Molempia voidaan käyttää iteroimaan listan yli.
Syntaksi:
list_name.stream.forEach(variable->{//koodilohko})>Alla on esimerkki tästä menetelmästä:
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 = uusi ArrayList(); // Elementtien lisääminen listaan // Mukautetut syötteet myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // stream.forEach() -menetelmä tulostaa // kaikki listan elementit myList.stream().forEach( (temp) -> System.out.println(temp)); } }> Lähtö
A B C D>
Yllä olevan menetelmän monimutkaisuus:
Aika monimutkaisuus: O(n), missä 'n' on luettelon koko.
Aputila: O(1), Silmukkamuuttujille (tässä tapauksessa i) käytetään vakioavaruutta.tuple java
Menetelmät 6: Spliteratorin käyttö (Java 8 ja uudemmat)
Java 8 esitteli Jakaja käyttöliittymä, joka tulee sanoista split iterator. Se tarjoaa tavan toistaa elementtejä rinnakkaisystävällisemmällä tavalla. Splitterator voidaan hankkia useista lähteistä, mukaan lukien kokoelmista, kuten luetteloista. Spliteratorin forEachRemaining-menetelmää käytetään kaikkien jäljellä olevien elementtien läpikulkuun peräkkäin.
Syntaksi:
Spliterator spliterator = myList.spliterator();>
Alla on esimerkki tästä menetelmästä:
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'); // Spliterator Spliteratorin käyttöspliterator = myList.spliterator(); spliterator.forEachRemaining(System.out::println); } }> Lähtö
A B C D>
Yllä olevan menetelmän monimutkaisuus:
Aika monimutkaisuus: O(n), missä 'n' on luettelon koko.
Aputila: O(log n) tai O(1), (riippuen Spliterator-toteutuksen ominaisuuksista)