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 
  • 相关阅读:
    Treap 树堆 容易实现的平衡树
    (转)Maven实战(二)构建简单Maven项目
    (转)Maven实战(一)安装与配置
    根据请求头跳转判断Android&iOS
    (转)苹果消息推送服务器 php 证书生成
    (转)How to renew your Apple Push Notification Push SSL Certificate
    (转)How to build an Apple Push Notification provider server (tutorial)
    (转)pem, cer, p12 and the pains of iOS Push Notifications encryption
    (转)Apple Push Notification Services in iOS 6 Tutorial: Part 2/2
    (转)Apple Push Notification Services in iOS 6 Tutorial: Part 1/2
  • 原文地址:https://www.cnblogs.com/a-du/p/8289537.html
Copyright © 2011-2022 走看看