在本页中,我们将提供 java 8 Stream sorted()
排序的示例。
我们可以按照自然顺序和比较器提供的顺序对流进行排序。
在Java8
中,可以使用lambda
表达式实例化比较器(Comparator
)。
我们还可以颠倒自然顺序和比较器(Comparator
)提供的顺序。
自然排序使用Comparable提供的排序,该排序必须由实例为流元素的类实现。
在本页中,我们将使用java 8 Stream sorted()
方法对列表List
, Map
和Set
进行排序。
1.使用Stream sorted()
完成自然排序、比较器和反向排序
下面是sorted()
方法的语法
sorted()
:它使用自然顺序对流中的元素进行排序。元素类必须实现Comparable
接口。sorted(Comparator<? super T> comparator)
:这里我们使用lambda
表达式创建一个Comparator
实例。我们可以按升序和降序对流元素进行排序。
下面的代码行将按自然顺序对列表进行排序。
list.stream().sorted()
- 1
要反转自然顺序,Comparator
提供reverseOrder()
方法。
list.stream().sorted(Comparator.reverseOrder())
- 1
下面的代码行使用Comparator
对列表进行排序。
list.stream().sorted(Comparator.comparing(Student::getAge))
- 1
为了颠倒顺序,Comparator
提供reversed()
方法。
list.stream().sorted(Comparator.comparing(Student::getAge).reversed())
- 1
2.在List
中使用Stream sorted()
方法
下面我们对Student
列表进行排序操作。首先,我们将按自然顺序排序,然后使用比较器(Comparator
)。
下面是颠倒自然排序和比较器提供的排序的例子。
SortList.java
package com.concretepage; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class SortList { public static void main(String[] args) { List<Student> list = new ArrayList<Student>(); list.add(new Student(1, "Mahesh", 12)); list.add(new Student(2, "Suresh", 15)); list.add(new Student(3, "Nilesh", 10)); System.out.println("---Natural Sorting by Name---"); List<Student> slist = list.stream().sorted().collect(Collectors.toList()); slist.forEach(e -> System.out.println("Id:"+ e.getId()+", Name: "+e.getName()+", Age:"+e.getAge())); System.out.println("---Natural Sorting by Name in reverse order---"); slist = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); slist.forEach(e -> System.out.println("Id:"+ e.getId()+", Name: "+e.getName()+", Age:"+e.getAge())); System.out.println("---Sorting using Comparator by Age---"); slist = list.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList()); slist.forEach(e -> System.out.println