Stream sorted(Comparator comparator) returns a stream consisting of the elements of this stream, sorted according to the provided Comparator. For ordered streams, the sort method is stable but for unordered streams, no stability is guaranteed. It is a stateful intermediate operation i.e, it may incorporate state from previously seen elements when processing new elements. In java 8, Comparator can be instantiated using lambda expression. We can also reverse the natural ordering as well as ordering provided by Comparator.
Syntax :
Stream<T> sorted(Comparator<? super T> comparator)
Where, Stream is an interface and T
is the type of stream elements.
comparator is used to compare stream elements.
Below given are some examples to understand the implementation of the function in a better way.
Example 1 :
import java.util.*;
import java.util.stream.Stream;
class GFG {
public static void main(String[] args)
{
List<Integer> list = Arrays.asList( 5 , - 10 , 7 , - 18 , 23 );
System.out.println( "The sorted stream according "
+ "to provided Comparator is : " );
list.stream().sorted(Comparator.reverseOrder()).
forEach(System.out::println);
}
}
|
Output :
The sorted stream according to provided Comparator is :
23
7
5
-10
-18
Example 2 :
import java.util.*;
import java.util.stream.Stream;
class GFG {
public static void main(String[] args)
{
List<String> list = Arrays.asList( "Geeks" , "for" ,
"GeeksforGeeks" , "GeeksQuiz" , "GFG" );
System.out.println( "The sorted stream according "
+ "to provided Comparator is : " );
list.stream().sorted(Comparator.reverseOrder()).
forEach(System.out::println);
}
}
|
Output :
The sorted stream according to provided Comparator is :
for
GeeksforGeeks
GeeksQuiz
Geeks
GFG
Example 3 :
import java.util.*;
import java.util.stream.Stream;
class GFG {
public static void main(String[] args)
{
String[] array = { "GFG" , "Geeks" , "for" ,
"GeeksforGeeks" , "GeeksQuiz" };
System.out.println( "The sorted stream is :" );
Stream.of(array).sorted((str1, str2)
-> Character.compare(str1
.charAt(str1.length() - 1 ),
str2.charAt(str2.length() - 1 )))
. forEach(System.out::println);
}
}
|
Output :
The sorted stream is :
GFG
for
Geeks
GeeksforGeeks
GeeksQuiz