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.sorted
、List.sort
和 Collections.sort
以对元素进行排序。现在让我们逐步讨论如何使用 Comparator.reversed
。
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
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() + " "));
}
}
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() + " "));
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.concretepage.com/java/java-8/java-comparator-reversed
内容来源于网络,如有侵权,请联系作者删除!