Java中的流排序(Comparator-Comparator)方法

流排序(比较器比较器) 返回由该流的元素组成的流,并根据 提供比较器 .对于有序流,排序方法是稳定的,但对于无序流,不保证稳定性。这是一个 有状态中间操作 i、 在处理新元素时,它可能会合并以前看到的元素的状态。在Java8中,比较器可以使用 lambda表达式 我们还可以反转自然顺序以及比较器提供的顺序。 语法:

null
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.

下面给出一些例子,以更好地理解函数的实现。

例1:

// Implementation of Stream.sorted()
// to get a stream of sorted elements
// according to the provided Comparator
import 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);
}
}


输出:

The sorted stream according to provided Comparator is : 
23
7
5
-10
-18

例2:

// Implementation of Stream.sorted()
// to get a stream of sorted elements
// according to the provided Comparator
import 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);
}
}


输出:

The sorted stream according to provided Comparator is : 
for
GeeksforGeeks
GeeksQuiz
Geeks
GFG

例3:

// Implementation of Stream.sorted()
// to get a stream of sorted elements
import 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);
}
}


输出:

The sorted stream is :
GFG
for
Geeks
GeeksforGeeks
GeeksQuiz
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享