Program to convert a Set to Stream in Java using Generics
Last Updated :
11 Dec, 2018
Improve
Java Set is a part of java.util package and extends java.util.Collection interface. It does not allow the use of duplicate elements and at max can accommodate only one null element.
A Stream is a sequence of objects that supports various methods which can be pipelined to produce the desired result.
Below are the various methods to convert Set to Stream.
- Using Collection.stream(): This method involves directly converting the Set to Stream using Collection.stream() method.
Algorithm:
- Get the Set to be converted.
- Convert Set to Stream. This is done using Set.stream().
- Return/Print the Stream.
// Java Program to convert
// Set to Stream in Java 8
import
java.util.*;
import
java.util.stream.*;
import
java.util.function.*;
class
GFG {
// Generic function to convert a set to stream
private
static
<T> Stream<T> convertSetToStream(Set<T> set)
{
return
set.stream();
}
// Main method
public
static
void
main(String args[])
{
// Create a set of String
Set<Integer> setOfInteger =
new
HashSet<>(
Arrays.asList(
2
,
4
,
6
,
8
,
10
));
// Print the set of Integer
System.out.println(
"Set of Integer: "
+ setOfInteger);
// Convert Set of Stream
Stream<Integer>
streamOfInteger = convertSetToStream(setOfInteger);
// Print the Stream of Integer
System.out.println(
"Stream of Integer: "
+ Arrays.toString(
streamOfInteger.toArray()));
}
}
Output:Set of Integer: [2, 4, 6, 8, 10] Stream of Integer: [2, 4, 6, 8, 10]
- Using Predicate to filter the Stream: In this method filter(Predicate) method is used that returns a stream consisting of elements that match the given predicate condition. The Functional Interface Predicate is defined in the java.util.Function package and can therefore be used as the assignment target for a lambda expression or method reference. It improves manageability of code, helps in unit-testing them separately
Algorithm:
- Get the Set to be converted.
- Define the Predicate condition by either using pre-defined static methods or by creating a new method by overriding the Predicate interface. In this program, the interface is overridden to match the strings that start with “G”.
- Convert Set to Stream. This is done using Set.stream().
- Filter the obtained stream using the defined predicate condition
- The required Stream has been obtained. Return/Print the Stream.
// Java Program to convert
// Set to Stream in Java 8
import
java.util.*;
import
java.util.stream.*;
import
java.util.function.*;
class
GFG {
// Generic function to convert a set to stream
private
static
<T> Stream<T>
convertSetToStream(Set<T> set, Predicate<T> predicate)
{
return
set.stream()
.filter(predicate);
}
// Main method
public
static
void
main(String args[])
{
// Create a set of String
Set<String>
setOfString =
new
HashSet<>(
Arrays.asList(
"GeeksForGeeks"
,
"A computer portal"
,
"for"
,
"Geeks"
));
// Print the set of String
System.out.println(
"Set of String: "
+ setOfString);
// Create the predicate for item starting with G
Predicate<String> predicate =
new
Predicate<String>() {
@Override
public
boolean
test(String s)
{
// filter items that start with "G"
return
s.startsWith(
"G"
);
}
};
// Convert Set of Stream
Stream<String>
streamOfString = convertSetToStream(setOfString, predicate);
// Print the filter Stream of String
System.out.println(
"Stream from List with items"
+
" starting with G: "
);
System.out.println(Arrays.toString(
streamOfString.toArray()));
}
}
Output:Set of String: [for, Geeks, GeeksForGeeks, A computer portal] Stream from List with items starting with G: [Geeks, GeeksForGeeks]