在本頁中,我們將提供 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