JDK 8 之 Stream sorted() 示例

原文連接:http://www.concretepage.com/java/jdk-8/java-8-stream-sorted-example 
國外對Java8一系列總結的不錯, 翻譯過來給你們共享 
這篇文章將會講解Java 8 Stream sorted()示例, 咱們可以以天然序或着用Comparator 接口定義的排序規則來排序一個流。Comparator 能用用lambada表達式來初始化, 咱們還可以逆序一個已經排序的流。 
接下來咱們將會使用java 8 的流式sorted排序List 、Map 、 Set 
一、sorted() 默認使用天然序排序, 其中的元素必須實現Comparable 接口 
二、sorted(Comparator<? super T> comparator) :咱們能夠使用lambada 來建立一個Comparator 實例。能夠按照升序或着降序來排序元素。 
下面代碼以天然序排序一個listcss

list.stream().sorted() 

天然序逆序元素,使用Comparator 提供的reverseOrder() 方法java

list.stream().sorted(Comparator.reverseOrder()) 

使用Comparator 來排序一個listide

list.stream().sorted(Comparator.comparing(Student::getAge)) 

把上面的元素逆序this

list.stream().sorted(Comparator.comparing(Student::getAge).reversed()) 

Stream sorted() with List

咱們排序一組裝着Student 類對象的List 集合。 首先咱們使用天然序, 接着咱們使用Comparator 分別進行升序和降序: 
SortList.javaspa


 
 
 
 
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("Id:"+ e.getId()+", Name: "+e.getName()+", Age:"+e.getAge())); System.out.println("---Sorting using Comparator by Age with reverse order---"); slist = list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList()); slist.forEach(e -> System.out.println("Id:"+ e.getId()+", Name: "+e.getName()+", Age:"+e.getAge())); } }

* Student.java *翻譯


 
 
 
 
package com.concretepage; public class Student implements Comparable<Student> { private int id; private String name; private int age; public Student(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public String getName() { return name; } public int getAge() { return age; } @Override public int compareTo(Student ob) { return name.compareTo(ob.getName()); } @Override public boolean equals(final Object obj) { if (obj == null) { return false; } final Student std = (Student) obj; if (this == std) { return true; } else { return (this.name.equals(std.name) && (this.age == std.age)); } } @Override public int hashCode() { int hashno = 7; hashno = 13 * hashno + (name == null ? 0 : name.hashCode()); return hashno; } }

* Output *code

---Natural Sorting by Name--- Id:1, Name: Mahesh, Age:12 Id:3, Name: Nilesh, Age:10 Id:2, Name: Suresh, Age:15 ---Natural Sorting by Name in reverse order--- Id:2, Name: Suresh, Age:15 Id:3, Name: Nilesh, Age:10 Id:1, Name: Mahesh, Age:12 ---Sorting using Comparator by Age--- Id:3, Name: Nilesh, Age:10 Id:1, Name: Mahesh, Age:12 Id:2, Name: Suresh, Age:15 ---Sorting using Comparator by Age with reverse order--- Id:2, Name: Suresh, Age:15 Id:1, Name: Mahesh, Age:12 Id:3, Name: Nilesh, Age:10 
相關文章
相關標籤/搜索