Java8新特性:排序


package com;

import entity.Employee;

import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.function.*;
import java.util.stream.Stream;

public class Main {


    static List employees = Arrays.asList(
            new Employee("aa", 18, 99999.99),
            new Employee("bb", 22, 222222.22),
            new Employee("cc", 33, 23123.9),
            new Employee("dd", 11, 139.99),
            new Employee("ee", 23, 929.99),
            new Employee("ff", 68, 1000.00)
    );


    public static void main(String[] args) {
        Stream stream = employees.stream();
        //Exception in thread "main" java.lang.ClassCastException: entity.Employee cannot be cast to java.lang.Comparable
        //报错
//        stream.sorted().forEach((x) -> System.out.println(x));

        stream.sorted((x,y)->Double.compare(x.getMoney(),y.getMoney())).forEach(System.out::println);

    }
}

 

自然排序 就是 comparable, 要排序的那个类型的类实现 comparable接口。

比如string类:

所以字符串可以进行自然排序。   自然排序是按照compareTo方法就那些排序。

定制排序就是 Comparator排序,lambda中 传一个 Comparator接口。