【Java 8 新特性】Java Comparator.reverseOrder | 倒序排序-静态方法

文章目录

  • 在 Stream.sorted 中使用
  • 在 Collections.sort 中使用
  • 在 List.sort 中使用
  • 在 Arrays.sort 中使用
  • 参考文献

Comparator.reverseOrderJava 8中引入的一个静态方法,它返回比较器,对对象集合进行反向自然排序。

对于自然排序,一个类需要实现Comparable并定义compareTo方法。

一个对象集合根据自然排序中的compareTo进行排序。

Comparator.reverseOrder反转了自然排序。

它在内部调用Collections.reverseOrder()并返回比较器实例。

查找Comparator.reverseOrderJava源代码。

public static <T extends Comparable<? super T>> Comparator<T> reverseOrder() {return Collections.reverseOrder();
} 

Comparator还提供了Comparator.naturalOrder方法,该方法对对象集合施加自然顺序。

数字的自然顺序是数字顺序,字符串按字母顺序排序,日期按时间顺序排序。

IntegerStringDateJava类实现Comparable并重写其compareTo方法以实现自然排序。

为了促进类中的自然排序,我们需要实现Comparable接口并定义compareTo方法。

Comparator.reverseOrder返回比较器以逆转自然排序。

我们可以将Comparator.reverseOrderStream.sortedList.sortCollections.sortArrays.sort一起使用,对对象的集合进行反向自然排序。

在 Stream.sorted 中使用

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

StreamSortedDemo.java

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class StreamSortedDemo {public static void main(String[] args) {List<Integer> numList = Arrays.asList(12, 10, 15, 8, 11);numList.stream().sorted(Comparator.reverseOrder()).forEach(n -> System.out.print(n + " "));System.out.println("\n-----------");List<String> strList = Arrays.asList("Varanasi", "Allahabad", "Kanpur", "Noida");strList.stream().sorted(Comparator.reverseOrder()).forEach(s -> System.out.print(s + " "));System.out.println("\n-----------");	List<Student> stdList = Student.getStudentList();stdList.stream().sorted(Comparator.reverseOrder()).forEach(s -> System.out.print(s.getName() + " "));}
} 

Student.java

import java.util.Arrays;
import java.util.List;public class Student implements Comparable<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;}@Overridepublic int compareTo(Student s) {return name.compareTo(s.getName());}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;}
} 

输出

15 12 11 10 8 
-----------
Varanasi Noida Kanpur Allahabad 
-----------
Shyam Ram Mohan Mahesh Krishna 

在 Collections.sort 中使用

Collections.sort根据给定的比较器实例对指定的列表进行排序。

CollectionsSortDemo.java

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class CollectionsSortDemo {public static void main(String[] args) {List<Integer> numList = Arrays.asList(12, 10, 15, 8, 11);Collections.sort(numList, Comparator.reverseOrder());numList.forEach(n -> System.out.print(n + " "));System.out.println("\n-----------");List<String> strList = Arrays.asList("Varanasi", "Allahabad", "Kanpur", "Noida");Collections.sort(strList, Comparator.reverseOrder());strList.forEach(s -> System.out.print(s + " "));System.out.println("\n-----------");	List<Student> stdList = Student.getStudentList();Collections.sort(stdList, Comparator.reverseOrder());stdList.forEach(s -> System.out.print(s.getName() + " "));	}
} 

在 List.sort 中使用

List.sort根据给定的比较器实例对这个列表进行排序。

ListSortDemo.java

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class ListSortDemo {public static void main(String[] args) {List<Integer> numList = Arrays.asList(12, 10, 15, 8, 11);numList.sort(Comparator.reverseOrder());numList.forEach(n -> System.out.print(n + " "));System.out.println("\n-----------");List<String> strList = Arrays.asList("Varanasi", "Allahabad", "Kanpur", "Noida");strList.sort(Comparator.reverseOrder());strList.forEach(s -> System.out.print(s + " "));System.out.println("\n-----------");	List<Student> stdList = Student.getStudentList();stdList.sort(Comparator.reverseOrder());stdList.forEach(s -> System.out.print(s.getName() + " "));}
}

在 Arrays.sort 中使用

Arrays.sort根据指定比较器产生的顺序对指定的对象数组进行排序。

ArraysSortDemo.java

import java.util.Arrays;
import java.util.Comparator;
public class ArraysSortDemo {public static void main(String[] args) {Student s1 = new Student("Ram", 18);Student s2 = new Student("Shyam", 22);Student s3 = new Student("Mohan", 19);Student[] stdArray = { s1, s2, s3 };Arrays.sort(stdArray, Comparator.reverseOrder());for (Student s : stdArray) {System.out.print(s.getName() + " ");}}
}

参考文献

【1】Interface Comparator
【2】Java 8 Stream sorted() Example
【3】Java Comparator.reverseOrder

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笔记本win10系统连接wifi显示无Internet安全如何解决

方法一&#xff1a; 1、进入设置&#xff0c;找到“网络和Internet”&#xff0c;双击; 2、找到“更改适配器选项”&#xff0c;双击; 3、双击进入你的WLAN; 4、找到页面下方“属性”&#xff0c;单击; 5、(1)如果在项目列表里出项“WifiMasterNATDriver”是选中状态的话&…

Java8 Stream 之groupingBy 分组详解

本文主要讲解&#xff1a;Java 8 Stream之Collectors.groupingBy()分组示例 Collectors.groupingBy() 分组之常见用法 功能代码: /*** 使用java8 stream groupingBy操作,按城市分组list*/public void groupingByCity() {Map<String, List<Employee>> map employ…

win10 更新后不能切换输入法怎么办 win10输入法切换不了怎么解决

有win10用户说他在更新完系统后&#xff0c;在切换输入法的时候发现竟然切换不了无法切换&#xff0c;都不知道该怎么办了&#xff0c;这个小问题也是常有的&#xff0c;那么win10更新后不能切换输入法怎么办呢&#xff0c;下面小编给大家分享win10输入法切换不了的解决方法。 …

解决Java8 分组groupingBy 后排序不变的问题

在工作中遇到了java8 Stream groupBy 分组排序失效的问题 在此记录一下解决方案 预期效果&#xff1a; 按照年纪倒序并分组 实际结果&#xff1a;返回的数据是杂乱无章&#xff0c;并没有按照年纪倒序 示例代码如下&#xff1a; import java.util.Comparator; import java.u…

win8无线网络受限怎么办 win8网络受限的解决方法

很多时候&#xff0c;我们的用户经常会遇到win8无线网络受限的问题&#xff0c;从而导致电脑无法上网&#xff0c;这可如何是好呢?win8无线网络受限怎么办呢?下面&#xff0c;就给大家介绍几种win8无线网络受限的解决方法&#xff0c;提供给大家参考。 一、检测无线网络是否…

Stream.sorted

Stream sorted() Stream sorted​(Comparator<? super T> comparator) 对流中元素进行排序&#xff0c;排序后的元素放到新流中返回。 无参的方法按照自然顺序排序&#xff0c;有参数的方法根据自定义的比较器进行比较排序。 这两个方法都是有状态的中间操作&#xff0c…

教你win10怎么设置环境变量

电脑在运行一些程序的时候&#xff0c;我们经常都会需要修改系统的环境变量&#xff0c;添加路径&#xff0c;尤其是java运行环境配置和Android环境配置。为此&#xff0c;这里小编就以win10为例给大家讲解一下如何设置环境变量。 win10系统以界面优美、开机速度快、功能强大等…

Java8之Function函数、BiFunction函数详解

众所周知&#xff0c;Java8提供了一下非常重要的函数式接口。今天我们就来讲讲其中一个函数式接口-----Function接口。 下面的代码就是Function接口的全部代码。接下来我们逐个分析一下。 FunctionalInterface public interface Function<T, R>FunctionalInterface 表明…

告诉你win10自带录屏怎么使用

win10自带录屏怎么使用呢一些游戏玩家之前都是下载第三方屏幕录像软件录像&#xff0c;升级win10过后发现win10系统自带录屏功能&#xff0c;但是又不知道在哪打开?针对这个问题&#xff0c;我给大家带来了详细的操作步骤&#xff0c;一起来看看吧 不得不说win10系统实在是太…

Content-Type详解SpringBoot中如何根据Content-Type解析数据

文章目录Content-Type详解Content-Type是什么&#xff1f;Content-Type的格式Post请求中常见的Content-Type类型的结构SpringBoot中如何根据Content-Type解析数据一、接收get请求二、接收Post请求总结&#xff1a;Content-Type详解 Content-Type是什么&#xff1f; 在HTTP协议…

云骑士u盘装win8系统教程

云骑士u盘装win8系统教程 第一步 先在浏览器搜索云骑士官网&#xff1a;www.yunqishi.net 在官网上下载云骑士装机大师软件&#xff0c;下载好以后打开云骑士装机大师&#xff0c;打开后云骑士会自动配置用户的电脑信息&#xff0c;选择启动U盘界面。并且在电脑上插入U盘。 第…

U盘重装win7系统教程

第一步 先在浏览器搜索云骑士官网&#xff1a;www.yunqishi.net 在官网上下载云骑士装机大师软件&#xff0c;下载好以后打开云骑士装机大师&#xff0c;打开后云骑士会自动配置用户的电脑信息&#xff0c;选择启动U盘界面。并且在电脑上插入U盘。 2 第二步 接着就进入了选择系…

【编程技巧】Stream流之list转map、分组取每组第一条

前言 JDK1.8推出的stream流能极大的简化对集合的操作&#xff0c;让代码更美观&#xff0c;老规矩&#xff0c;直接上代码。 一、list转map 取list中对象的某个属性作为唯一key&#xff0c;对象作为value形成一个map集合&#xff0c;能够便于在后续业务中取值而不用遍历list…

番茄花园 Win10 系统 64位 全新纯净版 v2021.01

番茄花园 Win10 系统 64位 全新纯净版 v2021.01介绍&#xff1a; 1、支持IDE、SATA光驱启动恢复安装&#xff0c;支持WINDOWS下安装&#xff0c;支持PE下安装; 2、自动安装 AMD/Intel 双核 CPU 驱动和优化程序&#xff0c;发挥新平台的最大性能; 3、安装方便快速&#xff0c…

Java中String类常用方法详解: concat(),format(),charAt(),indexOf(),substring(),compareTo(),split(),replaceAll

文章目录1.连接字符串 concat()2.创建格式化对象 format()3.获取字符串某一位置字符 charAt()4.获取字符串的长度 length()5.查找子串在字符串中的位置 indexOf()6.截取字符串的子串 substring()7.字符串比较 compareTo()8.字符串大小写转换 toLowerCase()【大写换小写】 toUpp…

技术编辑帮你win7系统查看显卡容量大小的详细技巧

技术帮你win7系统查看显卡容量大小的详细技巧

索尼首次展示其Airpeak电影摄制无人机

索尼首次展示其Airpeak电影摄制无人机 在模糊的新闻稿和同样神秘的视频中宣布Airpeak仅仅两个月后&#xff0c;索尼就在虚拟CES 2021演示中展示了其新无人机。Airpeak支持Sony的Alpha系列无反光镜相机&#xff0c;并使用AI在飞过天空时保持图像稳定。 索尼首次展示其Airpeak电…

Guava中基础工具类Joiner的使用字符串拼接方法 joiner.on

Guava 中有一些基础的工具类&#xff0c;如下所列&#xff1a; 1&#xff0c;Joiner 类&#xff1a;根据给定的分隔符把字符串连接到一起。MapJoiner 执行相同的操作&#xff0c;但是针对 Map 的 key 和 value。 2&#xff0c;Splitter 类&#xff1a;与 Joiner 操作相反的类…

开机按f12怎么恢复系统 开机按f12恢复系统

有时候我们可能会遇到系统损坏或者是系统崩溃的问题,都会开不了机.那么开机按f12怎么恢复系统呢?用户并不知道如何操作,相信用户都很感兴趣该问题的解决方法,下面我在win7纯净版找到关于开机按f12恢复系统的详细操作教程,需要的朋友可以参考一下. 开机按f12怎么恢复系统 1.重启…

手把手教你dns服务器未响应导致无法上网怎么办

dns服务器未响应怎么办&#xff1f;其实每个问题都是有着相对应的原因外加解决方法的&#xff0c;我这刚好就有一篇关于如何解决dns服务器未响应的方法&#xff0c;现在就来分享给各位小伙伴们哈~ 不知道小伙伴们在使用电脑进行上网的时候&#xff0c;有木有遇到过这样子的一个…