ArrayList中放的是一个对象,如何同时根据对象中的三个字段对List进行排序

news/2024/12/22 20:11:33/
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class YourObject {private int field1;private String field2;private double field3;// 构造函数和其他代码public int getField1() {return field1;}public String getField2() {return field2;}public double getField3() {return field3;}
}public class Main {public static void main(String[] args) {// 创建包含对象的ArrayListArrayList<YourObject> list = new ArrayList<>();// 添加对象到ArrayList// 使用Comparator对ArrayList进行排序Collections.sort(list, Comparator.comparingInt(YourObject::getField1).thenComparing(YourObject::getField2).thenComparingDouble(YourObject::getField3));}
}

Comparator.comparingInt(YourObject::getField1):这是创建一个比较器,通过 getField1 方法比较对象的整型字段 field1。这个比较器首先按照 field1 进行升序排序。

.thenComparing(YourObject::getField2):使用 thenComparing 方法,如果 field1 相等,则按照对象的字符串字段 field2 进行升序排序。对date类型的数据进行排序也是用这个方法。

.thenComparingDouble(YourObject::getField3):再次使用 thenComparing 方法,如果 field1 和 field2 相等,则按照对象的双精度字段 field3 进行升序排序。

这个排序默认的是升序,如果是想要降序的话在每个 comparing 或 thenComparing 方法后面加上 .reversed() 将会反转排序顺序,使其按照降序排列。

Collections.sort(list, Comparator.comparingInt(YourObject::getField1).reversed().thenComparing(YourObject::getField2).reversed().thenComparingDouble(YourObject::getField3).reversed());

http://www.ppmy.cn/news/1230855.html

相关文章

rosnode ping指令

节点是一个可执行文件&#xff0c;它可以通过ROS来与其他节点进行通信(这些节点可以分布在不同设备上面的软件直接&#xff0c;例如一台在Windows上面&#xff0c;一台在Ubuntu&#xff0c;一台在stm32上面) 节点是ROS中非常重要的一个概念&#xff0c;为了帮助初学者理解这个…

opencv utils-0: 绘制polygon,轮廓最大内接圆

1, 绘制polygon /* ** @name: draw_polygon ** @brief: draw a polygon on image ** @param: [io] image ** @param: [in] poly ** @param: [in] close ** @param: [in] color ** @param: [in] thick ** @return void */ void draw_polygon(cv::Mat& image, const std:…

运维小技能:centos安装宝塔

文章目录 引言I 安装宝塔1.1 SSH重启宝塔面板的方法1.2 安装宝塔后需开端口,不开启将无法使用。引言 https://www.bt.cn/new/index.html 宝塔面板是一款服务器管理软件,支持windows和linux系统,可以通过Web端轻松管理服务器,提升运维效率。例如:创建管理网站、FTP、数据库…

封神测评:腾讯云服务器CVM标准型S5实例CPU内存带宽系统盘

腾讯云服务器CVM标准型S5实例具有稳定的计算性能&#xff0c;CVM 2核2G S5活动优惠价格280.8元一年自带1M带宽&#xff0c;15个月313.2元、2核4G配置748.2元15个月&#xff0c;CPU内存配置还可以选择4核8G、8核16G等配置&#xff0c;公网带宽可选1M、3M、5M或10M&#xff0c;腾…

C#入门(9):多态介绍与代码演示

多态性是面向对象编程的一个核心概念&#xff0c;它允许你使用一个父类引用来指向一个子类对象。这可以使程序具有可扩展性&#xff0c;并且可以用来实现一些高级编程技术&#xff0c;如接口、事件、抽象类等。 多态相关的概念 以下是一些在C#中使用多态性的关键概念&#xf…

HarmonyOS第一课-对比Kotlin,快速入门TypeScript

编程语言简介 基础类型 1. 布尔值 TypeScript 和 Kotlin: 两者都有 boolean 类型&#xff0c;用于表示 true 或 false。 ts示例&#xff1a; let isDone:boolean falsekotlin示例&#xff1a; val isDone: Boolean false2. 数字 TypeScript: 有 number 类型&#xff0c…

Vatee万腾科技创新之舟:Vatee数字化力量引领未来的独特路径

在数字化的大潮中&#xff0c;Vatee万腾如一艘科技创新之舟&#xff0c;在未来的海洋中翱翔。vatee万腾以强大的数字化力量为桨&#xff0c;引领着行业向着新的、独特的路径前行&#xff0c;塑造着数字时代的未来。 Vatee万腾不仅仅是一家科技公司&#xff0c;更是一艘创新之舟…

04.webpack中css的压缩和抽离

1.抽离css文件 利用mini-css-extract-plugin插件&#xff0c;替代style-loader const MiniCssExtractPlugin require(mini-css-extract-plugin) module.exports smart(webpackCommonConf, {mode: production,output: {// filename: bundle.[contentHash:8].js, // 打包代码…