logo

Ітерація ArrayLists у Java

ArrayList є частиною рамка колекції і присутній у пакеті java.util. Він надає нам динамічні масиви в Java. Хоча це може бути повільніше, ніж стандартні масиви, але може бути корисним у програмах, де потрібно багато маніпулювати масивом. Цей клас знаходиться в java.util пакет.

З появою та оновленнями у версіях Java нові методи стають доступними, ніби ми бачимо в Java8 сприйнятливі лямбда-вирази та концепції потоків були недоступні до цього, оскільки вони були представлені у версії Java8.



Методи:

15 із 100,00
  1. Використання петель for
  2. Використання while
  3. Використання циклу for-each
  4. Використання ітератора
  5. Використання лямбда-виразів (лише після Java8)
  6. Використання інтерфейсу перерахування

Давайте обговоримо ці методи, з яких ми відразу можемо зрозуміти, що три методи є просто наївними підходами, а подальші методи несуть із собою певну оптимізацію. Пам’ятайте, що хоча обхід елементів менший, ми зазвичай використовуємо наївний підхід, але якщо розмір елементів, які потрібно вставити, великий, ми використовуємо оптимальні підходи. Давайте швидко завершимо кожен із наведених вище підходів.

Спосіб 1: Використання циклу for



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 числа = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);  // Ітерація з використанням циклу for for (int i = 0; i< numbers.size(); i++)     // Printing and display the elements in ArrayList   System.out.print(numbers.get(i) + ' ');   } }>

Вихід
1 2 3 4 5 6 7 8>

Спосіб 2: Використання циклу 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 = новий ArrayList ();  // Додавання елементів до ArrayList // за допомогою методу add() al.add(3);  al.add(1);  al.add(7);  al.add(20);  al.add(5);  // Крок 1: Встановлення та ініціалізація змінної // відповідно до синтаксису циклу while // Початкове оголошення та встановлення int val = 0;  // Крок 2: Умова // Поки наша змінна лічильника не буде меншою за розмір // ArrayList while (al.size()> val) { // Друк елемента, який зберігається вище // умова true System.out.println(al .get(val));  // Крок 3: Завершення умови шляхом збільшення // нашого лічильника на кожній ітерації val++ ;  } } }>

Вихід
3 1 7 20 5>

Спосіб 3: Використовуючи для кожної петлі

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 числа = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);  // Для кожного циклу для ітерації ArrayList for (Integer i : numbers) // Друк елементів ArrayList System.out.print(i + ' ');  } }>

Вихід
1 2 3 4 5 6 7 8>

Спосіб 4: Використання ітератора



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 числа = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);  // Ітерація ArrayList за допомогою ітератора Iterator it = numbers.iterator();  // Зберігається, доки не залишиться один елемент // у списку while (it.hasNext()) // Друк елементів ArrayList System.out.print(it.next() + ' ');  } }>

Вихід
1 2 3 4 5 6 7 8>

Спосіб 5: Використання лямбда-виразів

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 числа = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);  // Друк чисел за допомогою лямбда-виразів // було представлено пізніше в java8 numbers.forEach(number->System.out.println(number));  } }>

Вихід
1 2 3 4 5 6 7 8>

Спосіб 6: Використання інтерфейсу перерахування

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 = новий ArrayList ();  // Додавання елементів до ArrayList al.add(34);  al.add(12);  al.add(34);  al.add(23);  al.add(54);  // Отримання об'єкта перерахування Enumeration e = Collections.enumeration(al);  // До тих пір, поки елементи є, while (e.hasMoreElements()) // Друк елементів за допомогою методу nextElement() System.out.println(e.nextElement());  } }>

Вихід
34 12 34 23 54>

Тепер це ще одне доповнення до статті, оскільки ми закінчили обговорення всіх методів, які можна використовувати для повторення елементів. Дотепер ми обходили лише вхідні елементи і не бачили обходу. Що, якщо ми гратимемо з елементами, ми також розглядаємо

приклад

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 = новий ArrayList ();  al.add(10);  al.add(20);  al.add(30);  al.add(1);  al.add(2);  // Видалення елементів менше 10 за допомогою // Iterator.remove() Iterator itr = al.iterator();  while (itr.hasNext()) { int x = (Integer)itr.next();  якщо (х< 10)  itr.remove();  }  System.out.println('Modified ArrayList : '  + al);  } }>

Вихід
Modified ArrayList : [10, 20, 30]>

Видалення елементів під час обходу: Не рекомендується використовувати ArrayList.remove() під час повторення елементів. Це може призвести до ConcurrentModificationException (Відноситься до це для прикладу програми з цим винятком). Під час повторення елементів рекомендується використовувати Iterator.remove() метод.