Convert Stream to Set in Java

📘 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

Converting a Stream to a Set in Java is a common operation when you need to eliminate duplicate elements or leverage the properties of a Set, such as efficient membership testing. This tutorial will guide you through the steps to convert a Stream to a Set, including detailed explanations and code examples.

Table of Contents

  1. Introduction
  2. Why Convert Stream to Set?
  3. Methods to Convert Stream to Set
    • Using Collectors.toSet()
    • Using Collectors.toCollection()
  4. Example Code
  5. Conclusion

1. Introduction

In Java, a Stream is a sequence of elements supporting sequential and parallel aggregate operations. A Set is a collection that does not allow duplicate elements. Converting a Stream to a Set can be useful when you want to remove duplicates and leverage the efficient membership testing provided by sets.

2. Why Convert Stream to Set?

  • Remove Duplicates: Ensure that all elements are unique.
  • Efficient Membership Testing: Sets provide efficient methods for checking if an element exists.
  • Interoperability: Many APIs and operations require sets.

3. Methods to Convert Stream to Set

Using Collectors.toSet()

The Collectors.toSet() method is the simplest way to collect elements from a Stream into a Set.

import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; public class StreamToSetExample { public static void main(String[] args) { // Create a stream of elements Stream<String> stream = Stream.of("apple", "banana", "apple", "orange"); // Convert stream to set using Collectors.toSet() Set<String> set = stream.collect(Collectors.toSet()); // Print the set System.out.println("Set: " + set); } } 

Using Collectors.toCollection()

The Collectors.toCollection() method allows you to specify the type of Set to be used. For example, you can use a TreeSet for sorted elements or a LinkedHashSet to maintain insertion order.

import java.util.LinkedHashSet; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; public class StreamToLinkedHashSetExample { public static void main(String[] args) { // Create a stream of elements Stream<String> stream = Stream.of("apple", "banana", "apple", "orange"); // Convert stream to LinkedHashSet using Collectors.toCollection() Set<String> set = stream.collect(Collectors.toCollection(LinkedHashSet::new)); // Print the set System.out.println("LinkedHashSet: " + set); } } 

4. Example Code

Here is a complete example that demonstrates both methods for converting a Stream to a Set.

import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet; import java.util.stream.Collectors; import java.util.stream.Stream; public class ConvertStreamToSet { public static void main(String[] args) { // Create a stream of elements Stream<String> stream = Stream.of("apple", "banana", "apple", "orange"); // Convert stream to HashSet using Collectors.toSet() Set<String> hashSet = stream.collect(Collectors.toSet()); System.out.println("HashSet: " + hashSet); // Re-create the stream because it was consumed in the previous operation stream = Stream.of("apple", "banana", "apple", "orange"); // Convert stream to LinkedHashSet using Collectors.toCollection() Set<String> linkedHashSet = stream.collect(Collectors.toCollection(LinkedHashSet::new)); System.out.println("LinkedHashSet: " + linkedHashSet); // Re-create the stream because it was consumed in the previous operation stream = Stream.of("apple", "banana", "apple", "orange"); // Convert stream to TreeSet using Collectors.toCollection() Set<String> treeSet = stream.collect(Collectors.toCollection(TreeSet::new)); System.out.println("TreeSet: " + treeSet); } } 

5. Conclusion

In this tutorial, we've learned how to convert a Stream to a Set in Java using two different methods: Collectors.toSet() and Collectors.toCollection(). Each method serves different purposes based on your specific needs:

  • Collectors.toSet(): Simple and quick way to collect elements into a HashSet.
  • Collectors.toCollection(): Allows specifying the type of Set (e.g., LinkedHashSet for insertion order, TreeSet for sorted order).

Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare