Jdk8 nuevas características ordenar

Método proporcionado por Comparator

/ ** 
 * @author GTR 
 * @create 04/13/2020 - 16:12 
 * / 
público  de clase Persona { 

    privado String nombre;
    edad entera privada ;
    doble salario privado ; 


    Persona pública (nombre de cadena, edad entera, salario doble) {
         super ();
        este .name = nombre;
        this .age = age;
        this .salary = salario; 
    } 

    public String getName () {
         return name; 
    } 
    vacío público setName (String name) {
         this .name = name; 
    } 
    public Integer getAge () {
         return age; 
    } 
    public  void setAge (edad entera) {
         this .age = age; 
    } 
    public Double getSalary () {
         return salario; 
    } 
    public  void setSalary (salario doble) {
         this .salary = salario; 
    } 

    @Override 
    public String toString () {
         return"Persona [nombre =" + nombre + ", edad =" + edad + ", salario =" + salario + "]" ; 
    } 


}

 Implementación de clasificación

/ ** 
 * @author GTR 
 * @create 04/13/2020 - 16:14 
 * / 
público  de clase _Comparator { 
    Lista <persona> personList = nuevo ArrayList <> (); 

    @Before 
    public   void before () { 
        personList.add ( new Person ("hepengju", 28, 20000.0 )); 
        personList.add ( nueva Persona ("lisi", 44, 40000.0 )); 
        personList.add ( nueva Persona ("wangwu", 55, 50000.0 )); 
        personList.add ( nueva Persona ("zhaoliu", 66, 60000.0 ));
        personList.add ( nueva Persona ("zhangsan", 33, 33333.0 )); 
        personList.add ( nueva Persona ("zhangsan", 23, 30000.0 )); 
    } 

    // 按照 名字 排序
    @Test
     public   void test () { 
        personList.stream (). Sorted (Comparator.comparing (Person :: getName)). ForEach (System.out :: println); 
//         Persona [nombre = hepengju, edad = 28, salario = 20000.0]
 //         Persona [nombre = lisi, edad = 44, salario = 40000.0]
 //         Persona [nombre = wangwu, edad = 55, salario = 50000.0]
 //         Persona [nombre = zhangsan, edad = 33, salario = 33333.0]
 //        Persona [nombre = zhangsan, edad = 23, salario = 30000.0]
 //         Persona [nombre = zhaoliu, edad = 66, salario = 60000.0] 
    } 

    // 按照 名字 排序 降序
    @Test
     public   void test4 () { 
        personList.stream () .sorted (Comparator.comparing (Person :: getName) .reversed ()). forEach (System.out :: println); 
//         Persona [nombre = zhaoliu, edad = 66, salario = 60000.0]
 //         Persona [nombre = zhangsan, edad = 33, salario = 33333.0]
 //         Persona [nombre = zhangsan, edad = 23, salario = 30000.0]
 //         Persona [nombre = wangwu, edad = 55, salario = 50000.0]
 //         Persona [nombre = lisi, edad = 44, salario = 40000.0]
 //         Persona [nombre = hepengju, edad = 28, salario = 20000.0] 
    } 

    //Ordenar primero por nombre, ordenar por edad, ordenar por edad, ordenar por salario 
    @Test
     public  void test2 () { 
        personList.stream (). 
Sorted (Comparator.comparing (Person :: getName) .thenComparing (Person :: getAge ) .thenComparing (Person :: getSalary)). forEach (System.out :: println); //         Persona [nombre = hepengju, edad = 28, salario = 20000.0]
 //         Persona [nombre = lisi, edad = 44, salario = 40000.0]
 //         Persona [nombre = wangwu, edad = 55, salario = 50000.0]
 //         Persona [nombre = zhangsan, edad = 23, salario = 30000.0]
 //         Persona [nombre = zhangsan, edad = 33, salario = 33333.0 ]
 //         Persona [nombre = zhaoliu, edad = 66, salario = 60000.0] 
    } 

    //4. Maneje todos los valores nulos (nulo hasta el final) 
    @Test
     public  void test3 () {
        // personList.add (null); 
        personList.add ( new Person ( null , 33, 30000.0 )); 
        personList.add ( new Person ("zhangsan", null , 30000.0 )); 
        personList.add ( new Person ("zhangsan", 33, null )); 
        personList.add ( new Person ( null , null , null ));
        personList.stream (). sorted (Comparator.comparing (Person :: getName, Comparator.nullsLast (Comparator.naturalOrder ())) 
                .thenComparing (Person :: getName, Comparator.nullsLast (Comparator.naturalOrder ())) 
                .thenComparing ( Persona :: getName, Comparator.nullsLast (Comparator.naturalOrder ())) 
                ) .forEach (System.out :: println); 
//         Persona [nombre = hepengju, edad = 28, salario = 20000.0]
 //         Persona [nombre = lisi, edad = 44, salario = 40000.0]
 //         Persona [nombre = wangwu, edad = 55, salario = 50000.0]
 //         Persona [nombre = zhangsan, edad = 33, salario = 33333.0]
 //         Persona [nombre = zhangsan, edad = 23, salario = 30000.0]
 //        Persona [nombre = zhangsan, edad = nulo, salario = 30000.0]
 //         Persona [nombre = zhangsan, edad = 33, salario = nulo]
 //         Persona [nombre = zhaoliu, edad = 66, salario = 60000.0]
 //         Persona [ nombre = nulo, edad = 33, salario = 30000.0]
 //         Persona [nombre = nulo, edad = nulo, salario = nulo] 

    }
   // jdk8 lambda 排序
@Test
public void test5 () {
personList.stream (). sorted ((p1, p2) -> p1.getName (). compareTo (p2.getName ())) .forEach (System.out: : println);
// Persona [nombre = hepengju, edad = 28, salario = 20000.0]
// Persona [nombre = lisi, edad = 44, salario = 40000.0]
// Persona [nombre = wangwu, edad = 55, salario = 50000.0]
// Persona [nombre = zhangsan, edad = 33, salario = 33333.0]
// Persona [nombre = zhangsan, edad = 23, salario = 30000.0]
// Persona [nombre = zhaoliu, edad = 66, salario = 60000.0]
}

@Prueba
pública nulo test6 () {
personList.stream (). sorted ((p1, p2) -> p1.getAge () - p2.getAge ()) .forEach (System.out :: println);
// Persona [nombre = zhangsan, edad = 23, salario = 30000.0]
// Persona [nombre = hepengju, edad = 28, salario = 20000.0]
// Persona [nombre = zhangsan, edad = 33, salario = 33333.0]
// Persona [nombre = lisi, edad = 44, salario = 40000.0]
// Persona [nombre = wangwu, edad = 55, salario = 50000.0]
// Persona [nombre = zhaoliu, edad = 66, salario = 60000.0]
}

}

Supongo que te gusta

Origin www.cnblogs.com/dalianpai/p/12692934.html
Recomendado
Clasificación