Stream sorted (Comparator comparator) method in Java

06 Dec, 2018
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 :
// Implementation of Stream.sorted()// to get a stream of sorted elements// according to the provided Comparatorimport java.util.*;import java.util.stream.Stream;  class GFG {      // Driver code    public static void main(String[] args)    {          // Creating a list of Integers        List<Integer> list = Arrays.asList(5, -10, 7, -18, 23);          System.out.println("The sorted stream according "                           + "to provided Comparator is : ");          // Displaying the list of Strings in        // reverse order after sorting        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 :
// Implementation of Stream.sorted()// to get a stream of sorted elements// according to the provided Comparatorimport java.util.*;import java.util.stream.Stream;  class GFG {      // Driver code    public static void main(String[] args)    {          // Creating a list of Strings        List<String> list = Arrays.asList("Geeks", "for",                    "GeeksforGeeks", "GeeksQuiz", "GFG");          System.out.println("The sorted stream according "                           + "to provided Comparator is : ");          // Displaying the list of Strings in        // reverse order after sorting        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 :
// Implementation of Stream.sorted()// to get a stream of sorted elementsimport java.util.*;import java.util.stream.Stream;  class GFG {      // Driver code    public static void main(String[] args)    {          // Creating an array of Strings        String[] array = { "GFG", "Geeks", "for",                           "GeeksforGeeks", "GeeksQuiz" };          System.out.println("The sorted stream is :");          // sorting the elements of array based        // on their last character        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

Java - util package
Java-Functions
java-stream
Java-Stream interface
Java
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Object Oriented Programming (OOPs) Concept in Java
How to iterate any Map in Java
Interfaces in Java
HashMap in Java with Examples
ArrayList in Java
Stream In Java
Collections in Java
Singleton Class in Java
Multidimensional Arrays in Java
Stack Class in Java