打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java8排序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
1、sorted() 默认使用自然序排序, 其中的元素必须实现Comparable 接口
2、sorted(Comparator<? super T> comparator) :我们可以使用lambada 来创建一个Comparator 实例。可以按照升序或着降序来排序元素。

下面代码以自然序排序一个list

list.stream().sorted() 

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

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

1
使用Comparator 来排序一个list

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

1
把上面的元素逆序

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

1
Stream sorted() with List
我们排序一组装着Student 类对象的List 集合。 首先我们使用自然序, 接着我们使用Comparator 分别进行升序和降序:

SortList.javapackage 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 *

—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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java集合的两种排序方法分享
Java stream().sorted()实现排序(升序、降序、多字段排序)
python字典排序方法大全
如何对数据进行各种排序?
java的list集合如何根据对象中的某个字段排序?
Java笔试题:将集合中的学生信息按照学生的年龄升序排列
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服