zoukankan      html  css  js  c++  java
  • 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 
    1、sorted() 默认使用自然序排序, 其中的元素必须实现Comparable 接口 
    2、sorted(Comparator<? super T> comparator) :我们可以使用lambada 来创建一个Comparator 实例。可以按照升序或着降序来排序元素。 
    下面代码以自然序排序一个list

    list.stream().sorted() 

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

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

    使用Comparator 来排序一个list

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

    把上面的元素逆序

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

    Stream sorted() with List

    我们排序一组装着Student 类对象的List 集合。 首先我们使用自然序, 接着我们使用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("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 
  • 相关阅读:
    python openpyxl 封装Execl常用操作的方法
    python webdriver grid多节点运行webdriver程序
    url的正则表达式
    基于Erlang VM的函数式编程语言Elixir
    [整理]团队开发效率提升探索一
    FreeBSD应该装gnome3做桌面
    FreeBSD pkg仓库有台湾的镜像了
    再探OAuth2
    【转】Android世界的Swift
    内存只有4G的MBP要怎么破
  • 原文地址:https://www.cnblogs.com/a-du/p/8289537.html
Copyright © 2011-2022 走看看