logo

Pakartokite per sąrašą Java

Java sąrašai leidžia mums išlaikyti tvarkingą objektų kolekciją. Pasikartojantys elementai ir nuliniai elementai taip pat gali būti saugomi „Java“ sąraše. Sąrašo sąsaja yra dalis java.util paketą ir jis paveldi kolekcijos sąsają. Tai išsaugo įterpimo tvarką.

Yra keletas būdų, kaip kartoti sąrašą „Java“. Jie aptariami toliau:



Metodai:

  1. Kilpų naudojimas (naivus požiūris)
  2. Naudojant Iteratorius
  3. Naudojant Sąrašo iteratorius
  4. Naudojant lambda išraišką
  5. Naudojant stream.forEach()
  6. Naudojant „Spliterator“ („Java 8“ ir naujesnės versijos)

1-A metodas: paprastas ciklas

Kiekvienas elementas gali būti pasiekiamas iteruojant naudojant paprastą kilpą. Indeksą galima pasiekti naudojant indeksą kaip ciklo kintamąjį.

Sintaksė:

for (i = 0; i>

Žemiau pateikiamas šio metodo pavyzdys:



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 = naujas ArrayList();  // Elementų įtraukimas į sąrašą // Pasirinktiniai įėjimai myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Ciklai, skirti kartoti per sąrašą (int i = 0; i< myList.size(); i++) {  // Print all elements of List  System.out.println(myList.get(i));  }  } }>

Išvestis
A B C D>

Pirmiau pateikto metodo sudėtingumas:

kaip pervardyti katalogą linux

Laiko sudėtingumas: O (n), kur „n“ yra sąrašo dydis.
Pagalbinė erdvė: O(1), pastovi erdvė naudojama ciklo kintamiesiems (i šiuo atveju).

1-B metodas: patobulinta kilpai

Kiekvieną elementą galima pasiekti iteruojant naudojant patobulintą kilpą. Ši kilpa buvo pristatyta J2SE 5.0 versijoje. Tai alternatyvus būdas pereiti už kilpą. Dėl to kodas tampa lengviau skaitomas.



Sintaksė:

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

Žemiau pateikiamas šio metodo pavyzdys:

c eilučių masyvas
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 = naujas ArrayList();  // Elementų įtraukimas į sąrašą // Pasirinktiniai įėjimai myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Patobulinto ciklo (for-each) naudojimas iteracijai (String i : myList) { // Spausdinti visus ArrayList elementus System.out.println(i);  } } }>

Išvestis
A B C D>

Pirmiau pateikto metodo sudėtingumas:

Laiko sudėtingumas: O (n), kur „n“ yra sąrašo dydis.
Pagalbinė erdvė: O(1), pastovi erdvė naudojama ciklo kintamiesiems (i šiuo atveju).

1-C metodas: naudokite trumpąją kilpą

Sąrašo kartojimą taip pat galima pasiekti naudojant ciklą while. Ciklo viduje esantis kodo blokas vykdomas tol, kol sąlyga yra teisinga. Ciklo kintamasis gali būti naudojamas kaip an rodyklę, kad pasiektumėte kiekvieną elementą.

Sintaksė:

while(variable>

Žemiau pateikiamas šio metodo pavyzdys:

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 = naujas ArrayList();  // Elementų įtraukimas į sąrašą // Pasirinktiniai įėjimai myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Bet kurio kintamojo inicijavimas į 0 int i = 0;  // Jei kintamojo reikšmė yra mažesnė už // reikšmę, reiškia Sąrašo dydį while (t< myList.size()) {  // Print element of list  System.out.println(myList.get(i));  // Increase variable count by 1  i++;  }  } }>

Išvestis
A B C D>

Pirmiau pateikto metodo sudėtingumas:

Laiko sudėtingumas: O (n), kur „n“ yra sąrašo dydis.
Pagalbinė erdvė : O(1), Konstanta erdvė naudojama ciklo kintamiesiems (i šiuo atveju).

2 būdas: iteratoriaus naudojimas

Iteratorius yra Java objektas, leidžiantis kartoti kolekcijos elementus. Kiekvieną sąrašo elementą galima pasiekti naudojant iteratorių su while ciklu.

Sintaksė:

Iterator variable = list_name.iterator();>

Žemiau pateikiamas šio metodo pavyzdys:

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 = naujas ArrayList();  // Elementų įtraukimas į sąrašą // Pasirinktiniai įėjimai myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Iteratorius Iteratoriusit = myList.iterator();  // Sąrašo elementų būklės tikrinimas // naudojant hasNext() metodą, grąžinant true till // sąraše yra vienas elementas while (it.hasNext()) { // Spausdinti visus sąrašo elementus System.out.println(it .Kitas());  } } }>

Išvestis
A B C D>

Pirmiau pateikto metodo sudėtingumas:

Laiko sudėtingumas: O (n), kur „n“ yra sąrašo dydis.
Pagalbinė erdvė: O(1), pastovi erdvė naudojama ciklo kintamiesiems (i šiuo atveju).

3 būdas: Sąrašo iteratoriaus naudojimas

„ListIterator“ yra „Java“ kalbos iteratorius, kurį galima įsigyti nuo 1.2 versijos. Tai leidžia mums po vieną kartoti elementus iš sąrašo įdiegto objekto. Jis naudojamas sąrašo kartojimui naudojant while kilpą.

java atidaryti failą

Sintaksė:

ListIterator variable = list_name.listIterator();>

Žemiau pateikiamas šio metodo pavyzdys:

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 = naujas ArrayList();  // Elementų įtraukimas į sąrašą // Pasirinktiniai įėjimai myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Sąrašo iteratorius ListIteratorit = myList.listIterator();  // Sąlyga patikrinkite, ar sąraše yra elemento // naudodami hasNext(), kuris galioja iki // sąraše yra vienas elementas while (it.hasNext()) { // Spausdinti visus sąrašo elementus System.out.println( it.kitas());  } } }>

Išvestis
A B C D>

Pirmiau pateikto metodo sudėtingumas:

t ff

Laiko sudėtingumas: O (n), kur „n“ yra sąrašo dydis.
Pagalbinė erdvė: O(1), pastovi erdvė naudojama ciklo kintamiesiems (i šiuo atveju).

4 metodas: Iterable.forEach() naudojimas

Ši funkcija pasiekiama nuo 8 versijos „Java“. Ji taip pat gali būti naudojama norint kartoti sąrašą. Iteracija gali būti atliekama naudojant a lambda išraiška.

Sintaksė:

list_name.forEach(variable->{//kodo blokas})>

Žemiau pateikiamas šio metodo pavyzdys:

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 = naujas ArrayList();  // Elementų įtraukimas į sąrašą // Pasirinktiniai įėjimai myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Lambda išraiška spausdina visus sąrašo elementus myList.forEach( (temp) -> { System.out.println(temp); });  } }>>  
Išvestis
A B C D>

Pirmiau pateikto metodo sudėtingumas:

Laiko sudėtingumas: O (n), kur „n“ yra sąrašo dydis.
Pagalbinė erdvė: O(1), pastovi erdvė naudojama ciklo kintamiesiems (i šiuo atveju).

5 būdas: Stream.forEach() naudojimas

stream().forEach() apdorojimo tvarka neapibrėžta, o forEach() atveju ji yra apibrėžta. Abi gali būti naudojamos kartoti per sąrašą.

Sintaksė:

// 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 = naujas ArrayList();  // Elementų įtraukimas į sąrašą // Pasirinktiniai įėjimai myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // stream.forEach() metodas spausdina // visus elementus sąraše myList.stream().forEach( (temp) -> System.out.println(temp));  } }>>  
Išvestis
A B C D>

Pirmiau pateikto metodo sudėtingumas:

Laiko sudėtingumas: O (n), kur „n“ yra sąrašo dydis.
Pagalbinė erdvė: O(1), pastovi erdvė naudojama ciklo kintamiesiems (i šiuo atveju).

6 metodai: „Spliterator“ naudojimas („Java 8“ ir naujesnės versijos)

„Java 8“ pristatė Skirstytuvas sąsaja, kuri reiškia split iterator. Tai suteikia galimybę kartoti elementus patogiau lygiagrečiai. Skaldytuvą galima gauti iš įvairių šaltinių, įskaitant tokias kolekcijas kaip sąrašai. „Spliterator“ metodas „forEachRemaining“ naudojamas visiems likusiems elementams iš eilės pereiti.

Sintaksė:

pilna i d e forma
Žemiau pateikiamas šio metodo pavyzdys:

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 = Sąrašas.of('A', 'B', 'C','D');    // Naudojant Spliterator Spliteratorskirstytuvas = myList.spliterator();  spliterator.forEachRemaining(System.out::println);  } }>>  
Išvestis Pirmiau pateikto metodo sudėtingumas:

Laiko sudėtingumas: O (n), kur „n“ yra sąrašo dydis.
Pagalbinė erdvė: O(log n) arba O(1), (atsižvelgiant į „Spliterator“ diegimo charakteristikas)