Java Comparator.reversed方法介绍

x33g5p2x  于2022-09-23 转载在 Java  
字(4.3k)|赞(0)|评价(0)|浏览(499)

reversed 是 Java Comparator 功能接口的默认方法。此方法在 Java 8 中引入。 reversed 返回一个 Comparator,该 Comparator 强制此 Comparator 的反向排序。它已被声明如下。

default Comparator<T> reversed()

要使用 reversed 方法,我们需要实例化我们的 Comparator 并调用该方法。 reversed 将返回 Comparator 的新实例,该实例将强制此比较器的反向排序。查找示例代码以使用此方法。

Comparator<Student> nameComparator = (s1, s2) -> s1.getName().compareTo(s2.getName());
Collections.sort(list, nameComparator.reversed());

Comparator 实例可以作为参数传递给 Stream.sortedList.sortCollections.sort 以对元素进行排序。现在让我们逐步讨论如何使用 Comparator.reversed

Comparator.reversed 与 Stream.sorted

Stream.sorted 返回一个由该流的元素组成的流,根据提供的比较器进行排序。
StreamSortedDemo.java

package com.concretepage;
import java.util.Comparator;
import java.util.List;

public class StreamSortedDemo {
  public static void main(String[] args) {
	List<Student> list = Student.getStudentList();
	Comparator<Student> ageComparator = (s1, s2) -> s1.getAge() - s2.getAge();	
	list.stream().sorted(ageComparator.reversed()).forEach(s -> System.out.print(s.getAge() + " "));
	System.out.println("\n-----------");
	Comparator<Student> nameComparator = (s1, s2) -> s1.getName().compareTo(s2.getName());	
	list.stream().sorted(nameComparator.reversed()).forEach(s -> System.out.print(s.getName() + " "));
	System.out.println("\n-----------");	
	list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).forEach(s -> System.out.print(s.getAge() + " "));
	System.out.println("\n-----------");
	list.stream().sorted(Comparator.comparing(Student::getName).reversed()).forEach(s -> System.out.print(s.getName() + " "));	
  }
}

Student.java

package com.concretepage;
import java.util.Arrays;
import java.util.List;
public class Student {
    private String name;
    private int age;
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    public static List<Student> getStudentList(){
        Student s1 = new Student("Ram", 18);
        Student s2 = new Student("Shyam",22);
        Student s3 = new Student("Mohan",19);
        Student s4 = new Student("Mahesh",20);
        Student s5 = new Student("Krishna",21);
        List<Student> list = Arrays.asList(s1,s2,s3,s4,s5);
        return list;
    }
}

输出

22 21 20 19 18 
-----------
Shyam Ram Mohan Mahesh Krishna 
-----------
22 21 20 19 18 
-----------
Shyam Ram Mohan Mahesh Krishna

Comparator.reversed 与 List.sort

List.sort 根据给定的 Comparator 实例对该列表进行排序。
ListSortDemo.java

package com.concretepage;
import java.util.Comparator;
import java.util.List;

public class ListSortDemo {
  public static void main(String[] args) {
	List<Student> list = Student.getStudentList();
	Comparator<Student> ageComparator = (s1, s2) -> s1.getAge() - s2.getAge();	
	list.sort(ageComparator.reversed());
	list.forEach(s -> System.out.print(s.getAge() + " "));
	System.out.println("\n-----------");
	Comparator<Student> nameComparator = (s1, s2) -> s1.getName().compareTo(s2.getName());	
	list.sort(nameComparator.reversed());
	list.forEach(s -> System.out.print(s.getName() + " "));
	System.out.println("\n-----------");
	list.sort(Comparator.comparing(Student::getAge).reversed());	
	list.forEach(s -> System.out.print(s.getAge() + " "));	
	System.out.println("\n-----------");
	list.sort(Comparator.comparing(Student::getName).reversed());		
	list.forEach(s -> System.out.print(s.getName() + " ")); 	
  }
}

Comparator.reversed 与 Collections.sort

Collections.sort 根据给定的 Comparator 实例对指定列表进行排序。
CollectionsSortDemo.java

package com.concretepage;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class CollectionsSortDemo {
  public static void main(String[] args) {
	List<Student> list = Student.getStudentList();
	Comparator<Student> ageComparator = (s1, s2) -> s1.getAge() - s2.getAge();	
	Collections.sort(list, ageComparator.reversed());
	list.forEach(s -> System.out.print(s.getAge() + " "));
	System.out.println("\n-----------");
	Comparator<Student> nameComparator = (s1, s2) -> s1.getName().compareTo(s2.getName());	
	Collections.sort(list, nameComparator.reversed());
	list.forEach(s -> System.out.print(s.getName() + " ")); 
	System.out.println("\n-----------");
	Collections.sort(list, Comparator.comparing(Student::getAge).reversed());	
	list.forEach(s -> System.out.print(s.getAge() + " "));	
	System.out.println("\n-----------");
	Collections.sort(list, Comparator.comparing(Student::getName).reversed());		
	list.forEach(s -> System.out.print(s.getName() + " ")); 	
  }
}

相关文章

微信公众号

最新文章

更多