Java Stream sorted()

Java Stream sorted()

Stream sorted() 返回一个由这个流的元素组成的流,按照自然顺序进行排序。对于有序的流,排序方法是稳定的,但对于无序的流,不保证稳定性。它是一个 有状态的中间操作 ,也就是说,在处理新的元素时,它可能会加入以前看到的元素的状态。

语法:

Stream< T > sorted()

其中,Stream是一个接口,T 是流元素的类型。

异常: 如果这个流的元素不是可比较的,在执行终端操作时可能会抛出一个 java.lang.ClassCastException

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

例1 :

// Implementation of Stream.sorted()
// to get a stream of elements
// sorted in their natural order
import java.util.*;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Creating a list of integers
        List<Integer> list = Arrays.asList(-9, -18, 0, 25, 4);
  
        System.out.println("The sorted stream is : ");
  
        // displaying the stream with elements
        // sorted in natural order
        list.stream().sorted().forEach(System.out::println);
    }
}

输出:

The sorted stream is : 
-18
-9
0
4
25

例2 :

// Implementation of Stream.sorted()
// to get a stream of elements
// sorted in their natural order
import java.util.*;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Creating a list of strings
        List<String> list = Arrays.asList("Geeks", "for",
                     "GeeksQuiz", "GeeksforGeeks", "GFG");
  
        System.out.println("The sorted stream is : ");
  
        // displaying the stream with elements
        // sorted in their natural order
        list.stream().sorted().forEach(System.out::println);
    }
}

输出:

The sorted stream is : 
GFG
Geeks
GeeksQuiz
GeeksforGeeks
for

例3 :

// Using stream sorted to sort a stream
// of user defined class objects
import java.util.*;
  
class Point
{
    Integer x, y;
    Point(Integer x, Integer y) {
        this.x = x;
        this.y = y;
    }
      
    public String toString() { 
        return this.x + ", "+ this.y;
    } 
}
  
class GFG
{
    public static void main(String[] args)
    {
  
        List<Point> aList = new ArrayList<>();
        aList.add(new Point(10, 20));
        aList.add(new Point(5, 10));
        aList.add(new Point(1, 100));
        aList.add(new Point(50, 2000));
  
        // displaying the stream with elements
        // sorted according to x coordinate
        aList.stream()
        .sorted((p1, p2)->p1.x.compareTo(p2.x))
        .forEach(System.out::println);
    }
}

输出:

1, 100
5, 10
10, 20
50, 2000

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程