Different Ways to Iterate over a Set in Java

Iterate over a Set

A Set is a Collection that cares about uniqueness, it doesn’t allow duplicate elements. The .equals() method determines whether two objects are identical in witch case only one object can be in the set.

package com.memorynotfound.collections.set;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * @author MemoryNotFound.com
 */
public class SetIterateProgram {

    public static void main(String... args){

        Set<String> cars = new HashSet<String>();
        cars.add("DeLorean DMC-12 1982");
        cars.add("corvette stingray 1960");
        cars.add("mustang fastback 1967");

        // Enhanced for loop
        for (String car : cars){
            carPrinter(car);
        }

        // Basic loop with iterator
        for(Iterator<String> it = cars.iterator();it.hasNext();)  {
            carPrinter(it.next());
        }

        // While loop with iterator
        Iterator<String> it = cars.iterator();
        while(it.hasNext()){
            String car = it.next();
            carPrinter(car);
        }

        // JDK 8 streaming example lambda expression
        cars.stream().forEach(color -> carPrinter(color));

        // JDK 8 streaming example method reference
        cars.stream().forEach(SetIterateProgram::carPrinter);

        // JDK 8 for each with lambda
        cars.forEach(color -> carPrinter(color));

        // JDK 8 for each
        cars.forEach(SetIterateProgram::carPrinter);

    }

    private static void carPrinter(String car){
        System.out.println(car);
    }

}
note: If you want to use the JDK 8 way (lambda expression, method reference) you of course need to use the new JDK-8 in your project.

Sample output

Because a hashSet is not an ordered list, the order of the output may vary.

corvette stingray 1960
mustang fastback 1967
DeLorean DMC-12 1982
 

You may also like...