JAVA - Zero to Hero / Collection Framework

Iterating Over Collections

๐Ÿ” Iterating Over Collections in Java

Once you store data in a collection (like List, Set, etc.), you often need to traverse or loop through the elements to process them. Java provides several ways to iterate over collections.


๐Ÿ› ๏ธ Common Iteration Techniques:

Technique

Description

Applicable To

for-each loop

Simple and readable loop

All collections

Iterator

Universal way to iterate with removal option

All collections

ListIterator

Bi-directional iteration (only for List)

Lists only

for loop with index

Index-based iteration

List only

Streams (Java 8+)

Functional-style iteration

All collections


โœ… Enhanced for-each Loop

๐Ÿ“Œ Syntax:

for (Type element : collection) {
    // use element
}

โ–ถ๏ธ Example:

import java.util.ArrayList;

public class ForEachExample {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Mango");

        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}
Apple
Banana
Mango

โœ… Iterator

  • Supports safe removal of elements while iterating.

  • Works with all types of collections.

โ–ถ๏ธ Example:

import java.util.*;

public class IteratorExample {
    public static void main(String[] args) {
        Set<String> names = new HashSet<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");

        Iterator<String> it = names.iterator();
        while (it.hasNext()) {
            String name = it.next();
            System.out.println(name);
        }
    }
}
Alice
Charlie
Bob

โœ… ListIterator (Only for Lists)

  • Can iterate forward and backward

  • Can modify elements during iteration

โ–ถ๏ธ Example:

import java.util.*;

public class ListIteratorExample {
    public static void main(String[] args) {
        List<String> colors = new ArrayList<>(List.of("Red", "Green", "Blue"));
        ListIterator<String> it = colors.listIterator();

        // Forward
        while (it.hasNext()) {
            System.out.println("Forward: " + it.next());
        }

        // Backward
        while (it.hasPrevious()) {
            System.out.println("Backward: " + it.previous());
        }
    }
}
Forward: Red
Forward: Green
Forward: Blue
Backward: Blue
Backward: Green
Backward: Red

โœ… for loop with index (for List only)

โ–ถ๏ธ Example:

import java.util.*;

public class IndexLoopExample {
    public static void main(String[] args) {
        List<String> cities = List.of("Delhi", "Mumbai", "Chennai");

        for (int i = 0; i < cities.size(); i++) {
            System.out.println("City: " + cities.get(i));
        }
    }
}
City: Delhi
City: Mumbai
City: Chennai

โœ… Java 8 Streams (Functional Style)

โ–ถ๏ธ Example:

import java.util.*;

public class StreamExample {
    public static void main(String[] args) {
        List<String> languages = List.of("Java", "Python", "C++");

        languages.stream().forEach(lang -> System.out.println("Language: " + lang));
    }
}
Language: Java
Language: Python
Language: C++

๐Ÿง  Summary Table

Technique

Best For

Supports Remove?

Order Sensitive?

for-each

Simplicity

โŒ

โœ… for List

Iterator

Removing elements

โœ…

โŒ for Set

ListIterator

Forward + Backward (Lists only)

โœ…

โœ…

for with index

Index-based access

โŒ

โœ…

Streams

Functional programming

โŒ (usually)

โœ… for List