Реализация итератора связанного списка Java: пошаговое руководство

Чтобы реализовать итератор для связанного списка в Java, вы можете выполнить следующие действия:

  1. Определите класс для узла связанного списка, назовем его Node. Он должен иметь поле данных и ссылку на следующий узел.
class Node<T> {
    T data;
    Node<T> next;
    public Node(T data) {
        this.data = data;
        this.next = null;
    }
}
  1. Создайте отдельный класс для вашего связанного списка, назовем его LinkedList. У него должны быть методы для добавления элементов в список и получения итератора.
import java.util.Iterator;
class LinkedList<T> implements Iterable<T> {
    private Node<T> head;
    private Node<T> tail;
    public LinkedList() {
        head = null;
        tail = null;
    }
    public void add(T data) {
        Node<T> newNode = new Node<>(data);
        if (head == null) {
            head = newNode;
            tail = newNode;
        } else {
            tail.next = newNode;
            tail = newNode;
        }
    }
    @Override
    public Iterator<T> iterator() {
        return new LinkedListIterator();
    }
    private class LinkedListIterator implements Iterator<T> {
        private Node<T> current;
        public LinkedListIterator() {
            current = head;
        }
        @Override
        public boolean hasNext() {
            return current != null;
        }
        @Override
        public T next() {
            T data = current.data;
            current = current.next;
            return data;
        }
    }
}
  1. Теперь вы можете использовать итератор для перемещения по связанному списку и доступа к его элементам:
LinkedList<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(3);
for (Integer num : list) {
    System.out.println(num);
}

Это выведет:

1
2
3