返回顶部
首页 > 资讯 > 后端开发 > JAVA >一篇告诉你Comparator.comparing的使用
  • 231
分享到

一篇告诉你Comparator.comparing的使用

java 2023-08-23 06:08:01 231人浏览 泡泡鱼
摘要

Comparator.comparing用处 很多情况下sql不好解决的多表查询,临时表分组,排序,尽量用java8新特性stream进行处理,使用java8新特性 //返回 对象集合以类属性一升序排序list.stream().so

Comparator.comparing用处

很多情况下sql不好解决的多表查询,临时表分组,排序,尽量用java8新特性stream进行处理,使用java8新特性

//返回 对象集合以类属性一升序排序list.stream().sorted(Comparator.comparing(::属性一));//返回 对象集合以类属性一降序排序 注意两种写法//先以属性一升序,结果进行属性一降序list.stream().sorted(Comparator.comparing(::属性一).reversed());//以属性一降序list.stream().sorted(Comparator.comparing(::属性一,Comparator.reverseOrder()));//返回 对象集合以类属性一升序 属性二升序list.stream().sorted(Comparator.comparing(::属性一).thenComparing(::属性二));//返回 对象集合以类属性一降序 属性二升序 注意两种写法//先以属性一升序,升序结果进行属性一降序,再进行属性二升序list.stream().sorted(Comparator.comparing(::属性一).reversed().thenComparing(::属性二));//先以属性一降序,再进行属性二升序list.stream().sorted(Comparator.comparing(::属性一,Comparator.reverseOrder()).thenComparing(::属性二));//返回 对象集合以类属性一降序 属性二降序 注意两种写法//先以属性一升序,升序结果进行属性一降序,再进行属性二降序list.stream().sorted(Comparator.comparing(::属性一).reversed().thenComparing(::属性二,Comparator.reverseOrder()));//先以属性一降序,再进行属性二降序list.stream().sorted(Comparator.comparing(::属性一,Comparator.reverseOrder()).thenComparing(::属性二,Comparator.reverseOrder()));//返回 对象集合以类属性一升序 属性二降序 注意两种写法//先以属性一升序,升序结果进行属性一降序,再进行属性二升序,结果进行属性一降序属性二降序list.stream().sorted(Comparator.comparing(::属性一).reversed().thenComparing(::属性二).reversed());//先以属性一升序,再进行属性二降序list.stream().sorted(Comparator.comparing(::属性一).thenComparing(::属性二,Comparator.reverseOrder()));

注意,注意上面的代码:

Comparator.comparing(::属性一).reversed();Comparator.comparing(::属性一,Comparator.reverseOrder());
   简单来说就是:   1.先排序(默认升序),然后降序;   2.直接降序排序;

简单举个例子:

有个Person类:

class Person{    private int id;    private int score;    private String name;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public int getScore() {        return score;    }    public void setScore(int score) {        this.score = score;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Person(int id, int score, String name) {        this.id = id;        this.score = score;        this.name = name;    }    @Override    public String toString() {        return "Person{" +                "id=" + id +                ", score=" + score +                ", name='" + name + '\'' +                '}';    }    }

Main方法:

public class Test {    public static void main(String[] args) {        ArrayList<Person> people = new ArrayList<>();        people.add(new Person(1,2,"小明"));        people.add(new Person(2,3,"校长"));        people.add(new Person(2,1,"小子"));        people.sort(Comparator.comparing(Person::getId).thenComparing(Person::getScore));        for (Person person : people) {            System.out.println(person);        }    }}

结果:
在这里插入图片描述

来源地址:https://blog.csdn.net/qq_45979629/article/details/129204965

--结束END--

本文标题: 一篇告诉你Comparator.comparing的使用

本文链接: https://lsjlt.com/news/378342.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 一篇告诉你Comparator.comparing的使用
    Comparator.comparing用处 很多情况下sql不好解决的多表查询,临时表分组,排序,尽量用java8新特性stream进行处理,使用java8新特性 //返回 对象集合以类属性一升序排序list.stream().so...
    99+
    2023-08-23
    java
  • 一篇文章告诉你如何编写Vue插件
    目录什么是插件编写插件使用插件总结什么是插件 在Vue框架中,如果需要给Vue增加一些我们需要的功能,Vue给我留了一个插件的方式,我们可以编写自己的插件,然后在Vue中去注册插件,...
    99+
    2024-04-02
  • 一篇文章告诉你Vue3指令是如何实现的
    目录前言指令注册全局注册组件内注册指令搜寻指令搜寻的时机指令搜寻的逻辑指令绑定VNode指令调用关于指令的思考组件上使用指令组件上的一些使用场景总结前言 Vue 指令 是指 对普通D...
    99+
    2024-04-02
  • 一篇文章告诉你JavaScript的作用域和函数该这样理解
    目录一、作用域1.1 局部作用域1、函数作用域2、块作用域1.2 全局作用域1.3 作用域链1.4、闭包1.5 变量提升二、函数2.1、函数提升2.2、函数参数1、默认参数2、动态参...
    99+
    2024-04-02
  • 一篇文章告诉你如何在Java数组中插入一个字符
    目录定义一个数组定义插入的字符打印插入之前字符排列顺序假设插入位置找到插入位置数组数据下移移入数值输出数组总结定义一个数组 public class charInsert { ...
    99+
    2024-04-02
  • 一篇文中告诉你JS中的"值传递"和"引用传递"
    目录前言初步了解堆栈堆栈和类型的关系特点变量赋值参数传递小结面试题两者的区别就是:总结前言 现代的前端开发,不再是刀耕火种的 JQ 时代,而是 MVVM ,组件化,工程化,承载着日益...
    99+
    2024-04-02
  • 告诉我,你是懂GitHub的!
    大家好,我是青戈,今天分享Github很实用的几个玩法,大家快来跟我一起来学习下!前言相信GitHub对大家都不陌生,是一个非常好的学习资源网站,平时没事的时候down几个demo或者开源项目来学学,白嫖的那个feeling是真的美滋滋~ ...
    99+
    2023-07-25
  • 一座岛告诉你,什么是智慧!
    华为中国生态伙伴大会2019已落下帷幕,两天的时间,华为向大家展示了什么是智慧,什么才是真正的数字世界,当然还有那座仅用30天打造的一座“智慧岛”。...
    99+
    2023-06-03
  • 一篇文章告诉你如何用Python控制Excel实现自动化办公
    目录1.安装2.操作一个简单的Excel文档3.操作简单Excel文档并添加数据格式4.Excel中添加不同类型的数据5.Excel中添加数据图表最后:可能给予你助力的教程总结1.安装 2.操作一个简单的Excel...
    99+
    2022-06-02
    Python excel自动化办公
  • 一篇文章告诉你如何用事件委托实现JavaScript留言板功能
    用事件委托实现留言板功能。 <!DOCTYPE html> <html lang="en"> <head> <meta c...
    99+
    2024-04-02
  • 一篇文章告诉你如何用python进行自动化测试,调用c程序
    目录一、介绍二、方法三、示例windows平台1、编写搭建动态库c函数2、python导入库3、结果linux平台1、编写c程序2、编译成so动态库3、编写python导入库4、执行总结一、介绍 python可以做...
    99+
    2022-06-02
    python 自动化测试 调用c程序
  • 一篇文章告诉你JAVA Mybatis框架的核心原理到底有多重要
    目录持久层的那些事什么是 JDBCJDBC 原理什么是 MybatisMybatis 与 JDBC 的关系SqlSessionSqlSessionFactorySqlSessionF...
    99+
    2024-04-02
  • 用SAN还是NAS?我来告诉你
    通过对SAN和NAS的比较,人们可以了解采用这两种存储系统架构时要考虑的事项。对象存储和云计算也会影响可用的存储选项。存储区域网络(SAN)是以一种结构连接的存储,通常通过交换机连接,使许多不同的服务器能够轻松访问存储设备。从服务器应用程序...
    99+
    2023-06-06
  • 一篇文章告诉你如何实现Vue前端分页和后端分页
    目录1:前端手写分页(数据量小的情况下)2:后端分页,前端只需要关注传递的page和pageSize总结1:前端手写分页(数据量小的情况下) 前端需要使用slice截取: table...
    99+
    2024-04-02
  • 如何在Windows上实时运行Python代码?这篇教程告诉你!
    Python是一种高级编程语言,它被广泛应用于各种领域,如科学计算、数据分析、人工智能等。在Windows上,我们可以使用Python解释器来运行Python代码,但是每次修改代码后都需要重新运行解释器才能看到结果,这样效率非常低下。本文...
    99+
    2023-07-10
    windows 教程 实时
  • 手机cookie藏身何处?告诉你一个大秘密!
    手机Cookie藏身何处?告诉你一个大秘密! 在如今的移动互联网时代,手机已经成为人们生活不可或缺的一部分。而在使用手机上网时,我们经常会遇到需要登录的情况,例如购物、社交媒体、银行等应用程序。而登录信息的存储则需要依赖于Coo...
    99+
    2024-01-19
    手机cookie 隐藏位置
  • 你以为索引只是用来排序的?编程算法告诉你不一样的用途!
    索引是数据库中常用的一种数据结构,它可以提高查询速度,降低数据库负载。我们通常认为索引只是用来排序的,但是编程算法告诉我们,索引还有其他的用途。 一、索引的基本概念 在数据库中,索引是一种数据结构,它可以通过一定的算法和数据结构来提高数据的...
    99+
    2023-06-08
    面试 索引 编程算法
  • 一张图表告诉你Win8/Win8.1节节败退、Win7一路高歌
    微软已开始说服Windows7用户使用最新的Windows8或Windows 8.1,但是众所周知,Win8和Win8.1的表现不尽如人意。 Win8推出已有一年多的时间,但是表现不佳;Win8.1上市时间较短,现在下结...
    99+
    2023-06-02
    win7 Win8 图表
  • 你知道 ASP IDE 缓存吗?这份教程告诉你如何使用它!
    ASP IDE 缓存是一种可以提高网站性能的重要技术。它可以缓存网站页面和数据,减少服务器的请求次数和响应时间。本文将介绍 ASP IDE 缓存的基本概念和使用方法,并提供一些示例代码。 ASP IDE 缓存的基本概念 ASP IDE 缓存...
    99+
    2023-09-09
    ide 缓存 教程
  • Python 告诉你绝不知道的1983-2018 春晚
    摘要:用 Python 分析过往 36 年春晚节目数据,发现一些趣事。马上就要过年了,距离 2019 己亥猪年的除夕已不足一个礼拜,提起除夕,多数人马上想到「春节联欢晚会」这道丰盛的「年夜大餐」。看过那么多春晚,哪一年、哪些节目、哪些人你还...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作