使用Collections.sort方法来对自定义对象进行排序

news/2024/7/7 4:57:19

文章目录

  • 一、基本使用方法
  • 二、利用compare来实现


一、基本使用方法

Collections.sort方法可以用来对自定义对象进行排序。要实现这一点,需要在调用该方法时传入一个比较器,该比较器用于指定如何比较对象中的值。

举个例子,假设有一个自定义对象Person,其中包含姓名和年龄两个属性,我们可以使用以下代码对该对象列表进行按年龄排序:

List<Person> people = Arrays.asList(new Person("John", 25), new Person("Jane", 32));
Collections.sort(people, (p1, p2) -> p1.getAge() - p2.getAge());

这样就可以按照person对象的age属性进行排序,也可以按照其他属性排序

请注意,如果需要按照降序排序,可以将比较器更改为:

Collections.sort(people, (p1, p2) -> p2.getAge() - p1.getAge());

这样就可以按照降序排序了

二、利用compare来实现

Collections.sort() 可以通过传入一个Comparator来排序,这个Comparator里面有一个compare方法。这个方法需要实现比较两个对象的逻辑,并返回一个整数值。

这个方法的签名如下:

int compare(T o1, T o2)

如果返回值是0,则认为这两个对象相等;如果返回值是大于0的整数,则认为第一个对象大于第二个对象;如果返回值是小于0的整数,则认为第一个对象小于第二个对象。

举个例子,假设有一个自定义对象Person,其中包含姓名和年龄两个属性,我们可以使用以下代码对该对象列表进行按年龄排序:

List<Person> people = Arrays.asList(new Person("John", 25), new Person("Jane", 32));
Collections.sort(people, new Comparator<Person>() {
    @Override
    public int compare(Person p1, Person p2) {
        return p1.getAge() - p2.getAge();
    }
});

或者使用lambda表达式

List<Person> people = Arrays.asList(new Person("John", 25), new Person("Jane", 32));
Collections.sort(people, (p1, p2) -> p1.getAge() - p2.getAge());

这样就可以按照person对象的age属性进行排序了。

请注意,如果需要按照降序排序,可以在compare方法中返回p2.getAge() - p1.getAge()。

提示:更多内容可以访问Clang’s Blog:https://www.clang.asia


http://www.niftyadmin.cn/n/2521471.html

相关文章

CentOS7一键安装python3

文章目录一、更新OpenSSL二、安装Python一、更新OpenSSL 1、安装依赖&#xff0c;下载安装包 yum install -y gcc libffi-devel zlib* openssl-devel libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make perl …

ActionScript mxml flex 日期格式化 DateFormatter

跟Java很相似。都是使用一个格式化类来进行格式化&#xff1a; 第一步&#xff1a;var dateFormatter:DateFormatternew DateFormatter();//生成格式化对象 第二步&#xff1a;dateFormatter.formatString”YYYY-MM-DD JJ:NN:SS”;//设定格式 第三步&#xff1a;dateFormatt…

Java编程:Beanutils-No origin bean specified问题分析

Beanutils.copyProperties 异常一&#xff1a; No origin bean specified Beanutils.copyProperties 异常二&#xff1a; No destination bean specifiedBeanutils.copyProperties的源码:public void copyProperties(Object dest, Object orig) throws IllegalAccessException,…

开发中遇到的flex安全沙箱的问题

开发中遇到了安全沙箱的问题&#xff0c;一下有几种解决方案&#xff1a; 1. 播放器在 8.0 以上可以使用通配符 &ldquo;*&rdquo; 来允许所有域&#xff1a; System.security.allowDomain("*"); 如果要允许多个域&#xff0c;可以用逗号隔开&#xff1a; Syst…

C# []、Array、List、ArrayList 区别

[] 是针对特定类型、固定长度的。 Array 是针对任意类型、固定长度的。 List 是针对特定类型、任意长度的。 ArrayList 是针对任意类型、任意长度的。

RDA DEBUG

DEBUG寄存器&#xff1a;word 0xa0000010 word 0xa0000010 1  //debug开 word 0xa0000010 0  //debug关 当然也可以按模块打开/关闭debug信息&#xff0c;如 DBGCFG_KMF/DBGCFG_UMF/DBGCFG_MENU/DBGCFG_TUNER模块等。 所以大家在使用过程中要按源文件所在的模块加打印信息&…

ETL工具——kettle插件开发(基础篇)

在我们做ETL工作的时候&#xff0c;在某些项目中往往会遇到一些特别的流程任务&#xff0c;kettle原有的流程处理节点已经不能满足我们的要求&#xff0c;这时候我们就需要定制流程处理节点了。定制流程节点主要是针对数据的管理、数据的验证和某些特别文件数据的提取。大家通过…

ETL 抽取方案

二、ETL 抽取方案 ETL 过程中的主要环节就是数据抽取、数据转换和加工、数据装载。为了实现这些功 能&#xff0c;ETL 工具会进行一些功能上的扩充&#xff0c;例如工作流、调度引擎、规则引擎、脚本支持、 统计信息等。 数据抽取 数据抽取是从数据源中抽取数据的过程。实际…