logo

Iteravimas per ArrayLists Java

ArrayList yra dalis surinkimo sistema ir yra java.util pakete. Tai suteikia mums dinaminius „Java“ masyvus. Tačiau jis gali būti lėtesnis nei standartiniai masyvai, bet gali būti naudingas programose, kuriose reikia daug manipuliuoti masyve. Ši klasė randama java.util paketą.

Įvedus ir atnaujinus java versijas, pasiekiami naujesni metodai, tarsi iš „Java8“ matome, kad suvokiamos lambda išraiškos ir srautų koncepcijos anksčiau nebuvo prieinamos, nes jos buvo pristatytos 8 versijoje.



Metodai:

1 milijonas skaitmenimis
  1. Naudojant kilpoms
  2. Naudojant, kol
  3. Naudojant už kiekvieną kilpą
  4. Iteratoriaus naudojimas
  5. Lambda išraiškų naudojimas (tik po Java8)
  6. Surašymo sąsajos naudojimas

Aptarkime šiuos metodus, iš kurių iš karto galime suprasti, kad trys metodai yra tiesiog naivūs metodai, o tolesni metodai yra šiek tiek optimizuoti. Nepamirškite čia, nors elementų perėjimas yra mažesnis, mes paprastai linkę kartoti taikydami naivų metodą, tik jei įterpiami elementai yra dideli, tada naudojame optimalius metodus. Greitai apibendrinkime kiekvieną iš aukščiau paminėtų metodų.

1 būdas: Naudojant kilpą



Java
// Java program to iterate over an ArrayList // Using for loop // Importing all utility classes  import java.util.*; // Main class  class GFG {    // Main driver method   public static void main(String[] args)  {  // Creating and initializing the ArrayList  // Declaring object of integer type   List skaičiai = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);  // Iteravimas naudojant for ciklus for (int i = 0; i< numbers.size(); i++)     // Printing and display the elements in ArrayList   System.out.print(numbers.get(i) + ' ');   } }>

Išvestis
1 2 3 4 5 6 7 8>

2 būdas: Naudojant ciklą while

Java
// Java Program to Illustrate ArrayList // Using While Loop // Importing required classes import java.util.ArrayList ; // Main class public class GFG {  // Main driver method  public static void main(String[] args)  {  // Creating and initializing the ArrayList  // Declaring object of integer type  ArrayList al = naujas ArrayList ();  // Elementų įtraukimas į ArrayList // naudojant add() metodą al.add(3);  al.add(1);  al.add(7);  al.add(20);  al.add(5);  // 1 veiksmas: kintamojo nustatymas ir inicijavimas // pagal while ciklo sintaksę // Iš pradžių deklaruojama ir nustatoma int val = 0;  // 2 veiksmas: sąlyga // Kol mūsų skaitiklio kintamasis bus mažesnis nei dydis // ArrayList while (al.size()> val) { // Elemento, kuris yra aukščiau, spausdinimas // sąlyga true System.out.println(al .get(val));  // 3 veiksmas: sąlygos užbaigimas didinant // mūsų skaitiklis kiekvienoje iteracijoje val++ ;  } } }>

Išvestis
3 1 7 20 5>

3 būdas: Naudojimas kiekvienai kilpai

Java
// Java Program to Iterate over Arraylist // using for Each loop // Importing all utility classes import java.util.*; // Main class class GFG {  // Main driver method  public static void main(String[] args)  {  // Declaring and initializing ArrayList  List skaičiai = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);  // Kiekvienam ciklui kartoti ArrayList for (Sveikasis skaičius i : skaičiai) // ArrayList elementų spausdinimas System.out.print(i + ' ');  } }>>  
Išvestis
1 2 3 4 5 6 7 8>

4 būdas: Iteratoriaus naudojimas



Java
// Java program to iterate over an ArrayList // Using Iterator // Importing all utility classes import java.util.*; // Main class class GFG {  // Main driver method  public static void main(String[] args)  {  // Declaring and initializing ArrayList  List skaičiai = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);  // ArrayList kartojimas naudojant Iterator Iterator it = numbers.iterator();  // Išliks teisinga, kol sąraše lieka vienas elementas // while (it.hasNext()) // Spausdinti ArrayList elementus System.out.print(it.next() + ' ');  } }>>  
Išvestis 5 būdas: Lambda išraiškų naudojimas

Java
// Java program to iterate over an arraylist // using Iterator in Java8 with Lambda Expression  // Importing all utility classes  import java.util.*; // Main class  class GFG {    // Main driver method   public static void main(String[] args)  {  // Declaring and initializing ArrayList  // Custom input elements   List skaičiai = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);  // Skaičių spausdinimas naudojant lambda išraiškas // vėliau buvo pristatytas java8 numbers.forEach(number->System.out.println(number));  } }>>  
Išvestis 6 būdas: Surašymo sąsajos naudojimas

Java
// Java Program to Iterate over ArrayList elements // Using Enumeration // Importing required classes import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; // Main class class GFG {  // Main driver method  public static void main(String[] args)  {  // Creating an ArrayList  ArrayList al = naujas ArrayList ();  // Elementų įtraukimas į ArrayList al.add(34);  al.add(12);  al.add(34);  al.add(23);  al.add(54);  // Surašymo objekto gavimas Enumeration e = Collections.enumeration(al);  // Iki elementų yra, while (e.hasMoreElements()) // Spausdinti elementus naudojant nextElement() metodą System.out.println(e.nextElement());  } }>>  
Išvestis Dabar tai yra dar vienas straipsnio priedas, nes baigėme aptarti visus metodus, kurie gali būti naudojami elementams kartoti. Iki šiol mes perėjome tik įvesties elementus ir nematėme perėjimo, kas būtų, jei žaistume su elementais, todėl svarstome

Pavyzdys

Java
// Java program to demonstrate Working of // Iterator.remove() on Arraylist // Importing utility classes import java.util.List; import java.util.ArrayList; import java.util.Iterator; // Main class public class GFG {  // Main driver method   public static void main(String[] args)  {  // Creating a List with referenceto ArrayList  List al = naujas ArrayList ();  al.add(10);  al.add(20);  al.add(30);  al.add(1);  al.add(2);  // Pašalinkite elementus, mažesnius nei 10, naudodami // Iterator.remove() Iterator itr = al.iterator();  while (itr.hasNext()) { int x = (Sveikasis skaičius)itr.next();  jei (x< 10)  itr.remove();  }  System.out.println('Modified ArrayList : '  + al);  } }>

Išvestis Elementų pašalinimas važiavimo metu: Nerekomenduojama naudoti ArrayList.remove(), kai kartojama per elementus. Tai gali sukelti ConcurrentModificationException (Atsižvelgti į tai pavyzdinei programai su šia išimtimi). Kai kartojama per elementus, rekomenduojama naudoti Iterator.remove() metodas.