📘 Premium Read: Access my best content on Medium member-only articles — deep dives into Java, Spring Boot, Microservices, backend architecture, interview preparation, career advice, and industry-standard best practices.
🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (176K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
Introduction
Iteration is a common operation performed on collections such as lists, sets, and maps. Java provides multiple ways to iterate over these collections, including traditional loops, enhanced for-loops, iterators, and Java 8 features like forEach and streams. This guide covers various methods to iterate over List
, Set
, and Map
collections, including examples using Java 8 features.
Key Points:
- List: An ordered collection that allows duplicate elements.
- Set: An unordered collection that does not allow duplicate elements.
- Map: A collection that maps keys to values, with no duplicate keys allowed.
Table of Contents
- Iterating over List
- Iterating over Set
- Iterating over Map
- Conclusion
1. Iterating over List
Example List:
List<String> list = Arrays.asList("Alice", "Bob", "Charlie");
Traditional for Loop
for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); }
Enhanced for Loop (for-each)
for (String name : list) { System.out.println(name); }
Using Iterator
Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); }
Using ListIterator (for bidirectional iteration)
ListIterator<String> listIterator = list.listIterator(); while (listIterator.hasNext()) { System.out.println(listIterator.next()); } while (listIterator.hasPrevious()) { System.out.println(listIterator.previous()); }
Java 8 forEach Method
list.forEach(name -> System.out.println(name));
Java 8 Stream API
list.stream().forEach(System.out::println);
2. Iterating over Set
Example Set:
Set<String> set = new HashSet<>(Arrays.asList("Alice", "Bob", "Charlie"));
Enhanced for Loop (for-each)
for (String name : set) { System.out.println(name); }
Using Iterator
Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); }
Java 8 forEach Method
set.forEach(name -> System.out.println(name));
Java 8 Stream API
set.stream().forEach(System.out::println);
3. Iterating over Map
Example Map:
Map<String, Integer> map = new HashMap<>(); map.put("Alice", 25); map.put("Bob", 30); map.put("Charlie", 35);
Iterating over Entry Set
Using for-each Loop
for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); }
Using Iterator
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, Integer> entry = iterator.next(); System.out.println(entry.getKey() + ": " + entry.getValue()); }
Iterating over Keys
Using for-each Loop
for (String key : map.keySet()) { System.out.println(key + ": " + map.get(key)); }
Using Iterator
Iterator<String> iterator = map.keySet().iterator(); while (iterator.hasNext()) { String key = iterator.next(); System.out.println(key + ": " + map.get(key)); }
Iterating over Values
Using for-each Loop
for (Integer value : map.values()) { System.out.println(value); }
Using Iterator
Iterator<Integer> iterator = map.values().iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); }
Java 8 forEach Method
map.forEach((key, value) -> System.out.println(key + ": " + value));
Java 8 Stream API
map.entrySet().stream().forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue()) );
Complete Example with Output
The following program demonstrates different ways to iterate over a List
, Set
, and Map
in Java. It includes traditional methods and Java 8 features.
import java.util.*; import java.util.stream.Collectors; public class CollectionIterationExample { public static void main(String[] args) { // Example List List<String> list = Arrays.asList("Alice", "Bob", "Charlie"); // Example Set Set<String> set = new HashSet<>(Arrays.asList("Alice", "Bob", "Charlie")); // Example Map Map<String, Integer> map = new HashMap<>(); map.put("Alice", 25); map.put("Bob", 30); map.put("Charlie", 35); System.out.println("Iterating over List:"); iterateList(list); System.out.println("\nIterating over Set:"); iterateSet(set); System.out.println("\nIterating over Map:"); iterateMap(map); } private static void iterateList(List<String> list) { // Traditional for loop System.out.println("Using traditional for loop:"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } // Enhanced for loop System.out.println("Using enhanced for loop:"); for (String name : list) { System.out.println(name); } // Using Iterator System.out.println("Using Iterator:"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } // Using ListIterator for bidirectional iteration System.out.println("Using ListIterator:"); ListIterator<String> listIterator = list.listIterator(); while (listIterator.hasNext()) { System.out.println(listIterator.next()); } // Using Java 8 forEach method System.out.println("Using Java 8 forEach method:"); list.forEach(name -> System.out.println(name)); // Using Java 8 Stream API System.out.println("Using Java 8 Stream API:"); list.stream().forEach(System.out::println); } private static void iterateSet(Set<String> set) { // Enhanced for loop System.out.println("Using enhanced for loop:"); for (String name : set) { System.out.println(name); } // Using Iterator System.out.println("Using Iterator:"); Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } // Using Java 8 forEach method System.out.println("Using Java 8 forEach method:"); set.forEach(name -> System.out.println(name)); // Using Java 8 Stream API System.out.println("Using Java 8 Stream API:"); set.stream().forEach(System.out::println); } private static void iterateMap(Map<String, Integer> map) { // Iterating over Entry Set using for-each loop System.out.println("Using for-each loop over entry set:"); for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } // Iterating over Entry Set using Iterator System.out.println("Using Iterator over entry set:"); Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, Integer> entry = iterator.next(); System.out.println(entry.getKey() + ": " + entry.getValue()); } // Iterating over keys using for-each loop System.out.println("Using for-each loop over keys:"); for (String key : map.keySet()) { System.out.println(key + ": " + map.get(key)); } // Iterating over keys using Iterator System.out.println("Using Iterator over keys:"); Iterator<String> keyIterator = map.keySet().iterator(); while (keyIterator.hasNext()) { String key = keyIterator.next(); System.out.println(key + ": " + map.get(key)); } // Iterating over values using for-each loop System.out.println("Using for-each loop over values:"); for (Integer value : map.values()) { System.out.println(value); } // Iterating over values using Iterator System.out.println("Using Iterator over values:"); Iterator<Integer> valueIterator = map.values().iterator(); while (valueIterator.hasNext()) { System.out.println(valueIterator.next()); } // Using Java 8 forEach method System.out.println("Using Java 8 forEach method:"); map.forEach((key, value) -> System.out.println(key + ": " + value)); // Using Java 8 Stream API System.out.println("Using Java 8 Stream API:"); map.entrySet().stream().forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue()) ); } }
Output
Iterating over List: Using traditional for loop: Alice Bob Charlie Using enhanced for loop: Alice Bob Charlie Using Iterator: Alice Bob Charlie Using ListIterator: Alice Bob Charlie Using Java 8 forEach method: Alice Bob Charlie Using Java 8 Stream API: Alice Bob Charlie Iterating over Set: Using enhanced for loop: Alice Charlie Bob Using Iterator: Alice Charlie Bob Using Java 8 forEach method: Alice Charlie Bob Using Java 8 Stream API: Alice Charlie Bob Iterating over Map: Using for-each loop over entry set: Alice: 25 Bob: 30 Charlie: 35 Using Iterator over entry set: Alice: 25 Bob: 30 Charlie: 35 Using for-each loop over keys: Alice: 25 Bob: 30 Charlie: 35 Using Iterator over keys: Alice: 25 Bob: 30 Charlie: 35 Using for-each loop over values: 25 30 35 Using Iterator over values: 25 30 35 Using Java 8 forEach method: Alice: 25 Bob: 30 Charlie: 35 Using Java 8 Stream API: Alice: 25 Bob: 30 Charlie: 35
Conclusion
This program demonstrates various ways to iterate over List
, Set
, and Map
collections in Java. It includes traditional methods, enhanced for-loops, iterators, and Java 8 features like forEach
and the Stream API. By understanding these different iteration techniques, you can choose the most appropriate method for your specific use case, leading to more efficient and readable code.
Comments
Post a Comment
Leave Comment