Java8新特性

2023-10-27

可以利用 List 的 sort 方法进行排序,Comparator.comparing 可以指定排序字段,thenComparing 可以继续指定其他的排序字段。
默认使用正序排列,如果想倒序可以使用 Comparator.reverseOrder() 指定。

下面是示例代码
创建一个内部类 SortTest

@Getter
@Setter
@AllArgsConstructor
static class SortTest {
    private String name;
    private int a;
    private int b;
    private int c;
}

添加main方法,声明一个List,并往其中添加数据,再按规则进行排序(先按a倒序排列、再按b倒序排列、最后按c正序排列),最后输出。

public static void main(String[] args) {
    // 测试List多属性排序
    List<SortTest> list = new ArrayList<>();
    list.add(new SortTest("S1", 7, 3, 7));
    list.add(new SortTest("S2", 9, 5, 5));
    list.add(new SortTest("S3", 5, 7, 4));
    list.add(new SortTest("S4", 1, 5, 4));
    list.add(new SortTest("S5", 4, 5, 4));
    list.add(new SortTest("S6", 5, 6, 1));
    list.add(new SortTest("S7", 5, 7, 1));
    list.add(new SortTest("S8", 5, 3, 7));
    list.add(new SortTest("S9", 5, 7, 7));

    // 先按a倒序排列、再按b倒序排列、最后按c正序排列
    list.sort(Comparator.comparing(SortTest::getA, Comparator.reverseOrder())
            .thenComparing(SortTest::getB, Comparator.reverseOrder())
            .thenComparing(SortTest::getC));

    for (SortTest sortTest : list) {
        System.out.println(sortTest.getName() + "\t" + sortTest.getA() + "\t" + sortTest.getB() + "\t" + sortTest.getC());
    }
}

输出结果:从输出结果也可以看出,List 确定是按照我们定义的规则进行排序的。

S2	9	5	5
S1	7	3	7
S7	5	7	1
S3	5	7	4
S9	5	7	7
S6	5	6	1
S8	5	3	7
S5	4	5	4
S4	1	5	4

至此 Java8 的 List 多字段排序介绍完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java8新特性 的相关文章

  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类

随机推荐

  • Error: Flash Download failed - “Cortex-M4“ 解决方法

    stm32用仿真器下载代码时 我们需要配置keil中flash download列表下的芯片flash对应的型号 但是stm32产品比较丰富 有F0 F1系列的 F4 F7系列等等 而安装keil软件时 软件并没有包含所有系列芯片的flas
  • 使用nodejs+puppeteer+mysql+electron+vue等解决自动化弹幕之熊猫直播

    使用nodejs puppeteer mysql electron vue等解决自动化弹幕之熊猫直播 coding
  • Vue.js中的两大指令:v-on和v-bind,实现页面动态渲染和事件响应

    Vue js中的两大指令 v on和v bind 实现页面动态渲染和事件响应 一 Vue指令 一 v bind指令 二 v on指令 1 基本使用 1 最基本的语法 2 Vue中获取事件对象 了解 3 v on 事件修饰符 4 按键修饰符
  • SSRF漏洞

    ssrf漏洞介绍 Server Side Request Forgery 服务器端请求伪造 由于服务端提供了 从其他服务器应用获取数据的功能而没有对目标地址做过滤和限制 服务端请求伪造 利用存在缺陷的WEB应用作为代理攻击远程和本地的服务器
  • [python爬虫] Selenium定向爬取虎扑篮球海量精美图片

    前言 作为一名从小就看篮球的球迷 会经常逛虎扑篮球及湿乎乎等论坛 在论坛里面会存在很多精美图片 包括NBA球队 CBA明星 花边新闻 球鞋美女等等 如果一张张右键另存为的话真是手都点疼了 作为程序员还是写个程序来进行吧 所以我通过Pytho
  • 自适应神经网络控制

    自适应神经网络控制 基本思路 自适应控制率 u u u 1b x a x v 1 b x 1 b2 x b x 2b2 x es u frac 1 b x a x v left frac 1 varepsilon b x frac 1 va
  • UE4 UI实现环形进度条效果

    实现步骤 1 制作材质 2 创建材质实例 BGColor 改变背景颜色 ExtenalDensity 改变外圆边缘硬度 值越大越清晰 反之模糊 InternalDensity 改变内圆边缘硬度 percent 控制进度条百分比 StartA
  • 【云原生之kubernetes实战】在k8s环境下使用helm部署homer静态主页

    云原生之kubernetes实战 在k8s环境下使用helm部署homer静态主页 一 homer介绍 1 1 homer简介 1 2 homer特点 二 本次实践介绍 2 1 本次实践简介 2 2 本次环境规划 三 检查k8s环境 3 1
  • Expression tree

    表达树在NHibernate的映射中有重要应用 在Linq中也有非常重要的应用 就像CLR的GC一样需要多多体会与应用
  • 将图像上雨水去除的四种主流方法

    http blog csdn net whyymlm article details 76999469 对图片或者视频进行去噪的研究一直以来都是计算机视觉和图像处理领域内的一个重要课题 在现实生活中 因为雨雪会对道路上的路况造成一定程度的遮
  • 程序员兼职接私活平台大全,兼职也能月薪上万

    前言 PS 如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 CSDN大礼包 python兼职资源 全套学习资料 免费分享 安全链接 放心点击 根据我们的经验 程序员兼职主要分为三种 兼职职位众包 项目整包和自由职业者驻场 我
  • C++14变量模板

    如果对模板或者C 标准感兴趣的开发者们相信都不会对变量模板感到陌生 我们今天就讲一讲变量模板 从C 14 开始 变量也可以被某种类型参数化 称为变量模板 例如可以通过下面的代码定义pi 但是参数化了其类型 template
  • Kaggle竞赛题目之——Digit Recognizer

    Classify handwritten digits using the famous MNIST data This competition is the first in a series of tutorial competitio
  • 代码随想录刷题笔记3

    文章目录 回溯 细节 模板 题型 组合 分割 子集 排列 棋盘问题 N皇后问题 解数独问题 其他 总结 回溯 本质上 穷举 剪枝 回溯法就是解决这种k层for循环嵌套的问题 for循环横向遍历 递归纵向遍历 回溯不断调整结果集 注意画出 解
  • JavaScript闭包

    h2 span style font weight normal background color rgb 192 192 192 span style font size 18px 1 什么是闭包 span span h2 h4 span
  • RabbitMQ--基础--8.2--消息确认机制--发布确认机制

    RabbitMQ 基础 8 2 消息确认机制 发布确认机制 代码位置 https gitee com DanShenGuiZu learnDemo tree master rabbitMq learn rabbitMq 03 1 发布确认原
  • 空间相关分析(二) 全局莫兰指数的理解与计算

    在了解空间权重矩阵的相关知识后 再展开对空间相关分析的学习就会变得轻松许多 而在空间相关分析中 全局相关分析和局部相关分析是比较常用的两个方法 今天 就来分享一下全局相关分析的有关知识 目录 一 公式说明 二 深入理解 三 Moran I指
  • 投资理财笔记——以贴现的方式看待基金

    文章目录 DDM DCF 避免空中楼阁 DDM 关于DDM的相关知识 我在股票价值分析中写过 DDM模型认为股票价值决定于分红而不是未来的股价 而在基金购买中 我认为不可以盲目崇拜于分红 也就是基金的累计净值和净值之差 因为分红势必会出售部
  • Relational Learning with Gated and Attentive Neighbor Aggregator for Few-Shot Knowledge Graph Comple...

    小样本知识图补全 关系学习 利用三元组的邻域信息 提升模型的关系表示学习 来实现小样本的链接预测 主要应用的思想和模型包括 GAT TransH SLTM Model Agnostic Meta Learning MAML 论文地址 htt
  • Java8新特性

    可以利用 List 的 sort 方法进行排序 Comparator comparing 可以指定排序字段 thenComparing 可以继续指定其他的排序字段 默认使用正序排列 如果想倒序可以使用 Comparator reverseO