Skip to content

Latest commit

Β 

History

History
70 lines (52 loc) Β· 1.38 KB

File metadata and controls

70 lines (52 loc) Β· 1.38 KB

πŸ”„ Iterator

Category: Behavioral

πŸ“– Description

The Iterator pattern provides a way to access the elements of an aggregate object sequentially without exposing its internal structure.

πŸ› οΈ Purpose: Traverse collections in a uniform way.


πŸ”§ Structure

classDiagram
    class Iterator {
        +hasNext()
        +next()
    }
    class ConcreteIterator
    class Aggregate {
        +createIterator()
    }
    class ConcreteAggregate

    Iterator <|-- ConcreteIterator
    Aggregate <|-- ConcreteAggregate
    ConcreteAggregate --> ConcreteIterator
Loading

πŸ’» Java 21 Example

import java.util.List;
import java.util.ArrayList;

public final class NameRepository {

    private final List<String> names = new ArrayList<>();

    public NameRepository() {
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");
    }

    public Iterator<String> getIterator() {
        return names.iterator();
    }
}

Usage

import java.util.Iterator;

public final class Demo {
    public static void main(final String[] args) {
        NameRepository repository = new NameRepository();
        Iterator<String> it = repository.getIterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}