logo

Ітерація списку в Java

Списки в Java дозволяють підтримувати впорядковану колекцію об’єктів. Повторювані елементи, а також нульові елементи також можна зберігати в списку в Java. Інтерфейс List є частиною java.util і він успадковує інтерфейс Collection. Він зберігає порядок вставки.

Є кілька способів перебору списку в Java. Вони обговорюються нижче:



Методи:

  1. Використання циклів (Наївний підхід)
  2. Використання Ітератор
  3. Використання Ітератор списку
  4. Використання лямбда-виразу
  5. Використання stream.forEach()
  6. Використання Spliterator (Java 8 і новіші версії)

Метод 1-A: Простий цикл for

До кожного елемента можна отримати доступ шляхом ітерації за допомогою простого циклу for. Доступ до індексу можна отримати за допомогою індексу як змінної циклу.

Синтаксис:

for (i = 0; i>

Нижче наведено приклад цього методу:



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 = новий ArrayList();  // Додавання елементів до списку // Спеціальні введення myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Цикл for для проходження списку for (int i = 0; i< myList.size(); i++) {  // Print all elements of List  System.out.println(myList.get(i));  }  } }>

Вихід
A B C D>

Складність описаного вище методу:

Часова складність: O(n), де «n» — розмір списку.
Допоміжний простір: O(1), постійний пробіл використовується для змінних циклу (i в цьому випадку).

Метод 1-B: Розширений цикл for

До кожного елемента можна отримати доступ шляхом ітерації за допомогою вдосконаленого циклу for. Цей цикл був представлений у J2SE 5.0. Це альтернативний підхід до проходження циклу for. Це робить код більш читабельним.



Синтаксис:

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

Нижче наведено приклад цього методу:

каджал аггарвал
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 = новий ArrayList();  // Додавання елементів до списку // Спеціальні введення myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Використання вдосконаленого циклу for(for-each) для ітерації for (String i : myList) { // Друк усіх елементів ArrayList System.out.println(i);  } } }>

Вихід
A B C D>

Складність описаного вище методу:

Часова складність: O(n), де «n» — розмір списку.
Допоміжний простір: O(1), постійний пробіл використовується для змінних циклу (i в цьому випадку).

Метод 1-C: використання циклу while

Ітерація по списку також може бути досягнута за допомогою циклу while. Блок коду всередині циклу виконується, доки умова не стане істинною. Змінну циклу можна використовувати як ан індекс для доступу до кожного елемента.

Синтаксис:

while(variable>

Нижче наведено приклад цього методу:

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 = новий ArrayList();  // Додавання елементів до списку // Спеціальні введення myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Ініціалізація будь-якої змінної до 0 int i = 0;  // Якщо значення змінної менше, ніж // значення, що вказує на розмір List while (i< myList.size()) {  // Print element of list  System.out.println(myList.get(i));  // Increase variable count by 1  i++;  }  } }>

Вихід
A B C D>

Складність описаного вище методу:

Часова складність: O(n), де «n» — розмір списку.
Допоміжний простір : O(1), постійний пробіл використовується для змінних циклу (i в цьому випадку).

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

Ітератор — це об’єкт у Java, який дозволяє ітерувати елементи колекції. До кожного елемента в списку можна отримати доступ за допомогою ітератора з циклом while.

Синтаксис:

Iterator variable = list_name.iterator();>

Нижче наведено приклад цього методу:

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 = новий ArrayList();  // Додавання елементів до списку // Спеціальні введення myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Ітератор Ітераторit = myList.iterator();  // Перевірка умов для елементів у списку // за допомогою методу hasNext(), який повертає істину, доки // не буде одного елемента в списку while (it.hasNext()) { // Друк усіх елементів списку System.out.println(it .next());  } } }>

Вихід
A B C D>

Складність описаного вище методу:

Часова складність: O(n), де «n» — розмір списку.
Допоміжний простір: O(1), постійний пробіл використовується для змінних циклу (i в цьому випадку).

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

ListIterator — це ітератор у Java, який доступний з версії 1.2. Це дозволяє нам повторювати елементи один за одним із реалізованого об’єкта List. Він використовується для ітерації по списку за допомогою циклу while.

Синтаксис:

ListIterator variable = list_name.listIterator();>

Нижче наведено приклад цього методу:

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 = новий ArrayList();  // Додавання елементів до списку // Спеціальні введення myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Ітератор списку ListIteratorit = myList.listIterator();  // Перевірка умови, чи є елемент у списку // за допомогою hasNext(), який зберігається, доки // не буде одного елемента в списку while (it.hasNext()) { // Друк усіх елементів списку System.out.println( it.next());  } } }>

Вихід
A B C D>

Складність описаного вище методу:

додати до масиву в java

Часова складність: O(n), де «n» — розмір списку.
Допоміжний простір: O(1), постійний пробіл використовується для змінних циклу (i в цьому випадку).

Спосіб 4: Використання Iterable.forEach()

Ця функція доступна з Java 8. Її також можна використовувати для перебору списку. Ітерацію можна виконати за допомогою a лямбда-вираз.

Синтаксис:

list_name.forEach(variable->{//блок коду})>

Нижче наведено приклад цього методу:

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 = новий ArrayList();  // Додавання елементів до списку // Спеціальні введення myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // Лямбда-вираз друкує всі елементи в списку myList.forEach( (temp) -> { System.out.println(temp); });  } }>

Вихід
A B C D>

Складність описаного вище методу:

Часова складність: O(n), де «n» — розмір списку.
Допоміжний простір: O(1), постійний пробіл використовується для змінних циклу (i в цьому випадку).

Спосіб 5: Використання Stream.forEach()

Порядок обробки stream().forEach() не визначений, тоді як у випадку forEach() він визначений. Обидва можна використовувати для перебору списку.

Синтаксис:

list_name.stream.forEach(variable->{//блок коду})>

Нижче наведено приклад цього методу:

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 = новий ArrayList();  // Додавання елементів до списку // Спеціальні введення myList.add('A');  myList.add('B');  myList.add('C');  myList.add('D');  // метод stream.forEach() друкує // всі елементи всередині списку myList.stream().forEach( (temp) -> System.out.println(temp));  } }>

Вихід
A B C D>

Складність описаного вище методу:

Часова складність: O(n), де «n» — розмір списку.
Допоміжний простір: O(1), постійний пробіл використовується для змінних циклу (i в цьому випадку).

Методи 6: Використання Spliterator (Java 8 і новіші версії)

Java 8 представила Розплітор інтерфейс, що означає розділений ітератор. Він надає спосіб перебору елементів більш зручним способом. Spliterator можна отримати з різних джерел, включаючи колекції, такі як списки. Метод forEachRemaining Spliterator використовується для послідовного обходу всіх решти елементів.

метод підрядка в java

Синтаксис:

Spliterator spliterator = myList.spliterator();>

Нижче наведено приклад цього методу:

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 Spliteratorspliterator = myList.spliterator();  spliterator.forEachRemaining(System.out::println);  } }>

Вихід
A B C D>

Складність описаного вище методу:

Часова складність: O(n), де «n» — розмір списку.
Допоміжний простір: O(log n) або O(1), (залежно від характеристик реалізації Spliterator)