如何将对象中的内容按照一定的顺序进行排序

1、比较comparable和comparator,选择正确的方法进行排序

Comparable:强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。只能在类中实现compareTo()一次,不能经常修改类的代码实现自己想要的排序。实现此接口的对象列表(和数组)可以通过Collections.sort(和Arrays.sort)进行自动排序,对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。

Comparator强行对某个对象进行整体排序。可以将Comparator 传递给sort方法(如Collections.sort或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用Comparator来控制某些数据结构(如有序set或有序映射)的顺序,或者为那些没有自然顺序的对象collection提供排序。

因此,要想对对象中的内容按照一定的顺序进行整体排序,应选择comparator比较器。

2、以学生管理为例,要求按照成绩的升序进行排序。

在写好基本学生类和管理类的基础上进行添加修改。

首先应该在学生类中实现Comparator比较类,并重写ComparaTo方法,若按升序排序,结构如下:

public class Student implements Comparable<Student>{
    ....
    @Override
    public int compareTo(Student o) {
        return this.grade-o.grade;//升序
    }
}

然后,在测试类方法中,使用collections.sort()或arrays.sort()方法即可进行排序,具体如下:

          /*
          让学生 按照年龄排序 升序
         */
        Collections.sort(list);//要求 该list中元素类型  必须实现比较器Comparable接口

list是用来储存学生信息的。经证明此方法可行。

3、自定义Comparator规则

如果在使用的时候,想要独立的定义规则去使用,可以采用Collections.sort(List list,Comparetor<T> c)方式,自己定义规则,具体如下:

Collections.sort(list, new Comparator<Student>() {
    @Override
    public int compare(Student o1, Student o2) {
        return o2.getAge()-o1.getAge();//以学生的年龄降序
    }
});

结果如下:

Student{name='rose', age=18}
Student{name='ace', age=17}
Student{name='jack', age=16}
Student{name='abc', age=16}
Student{name='mark', age=16}

经测试,此方法也是可行的。

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

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

相关文章

it 部门的建议_应对IT项目阻力的8个建议

点击上方“蓝色字体”&#xff0c;选择 “设为星标”关键讯息&#xff0c;D1时间送达&#xff01;大多数IT主管表示&#xff0c;有关抵触进行坦率的对话有助于产生新信息&#xff0c;从而最终推动项目向前发展。而且&#xff0c;在某些情况下&#xff0c;阻力是由于对需要进行路…

科学家首次在野外直接观察到雀类新物种的快速形成

来源&#xff1a;与峰同行博客 概要&#xff1a;新物种是怎么形成的&#xff1f;这是生物学上最根本的问题之一。大致听说过进化论的人可能都知道&#xff0c;地球上我们现在看到的各种各样的生物都是由最初的单细胞经过亿万年的进化而来的。 科学家首次在野外直接观察到雀类新…

java中的字符,字符串,数字之间的转换

java中的字符&#xff0c;字符串&#xff0c;数字之间的转换 string 和int之间的转换 string转换成int :Integer.valueOf(" “) int转换成string : String.valueOf(int i ) 或者Integer.toString(int i) 或者i” “//i为int类型 其中三者的效率为&#xff1a;Integer.toS…

查看某个分区之前所有的数据_腾讯大数据面试真题汇总

腾讯面试题学长11&#xff09;笔试部分&#xff08;1&#xff09;有一表名t_sh_mtt_netdisk_log&#xff0c;从表名可以看出该表是什么业务的&#xff0c;是什么周期粒度的表。&#xff08;2&#xff09;怎么查看表结构&#xff0c;表创建语句&#xff1f;怎么查看表有哪些分区…

全球16家超级独角兽公司,为什么中国能占7家,印度只有1家?未来哪些行业最可能诞生独角兽?

来源&#xff1a; 财看见-腾讯财经&#xff08;ID&#xff1a;qqckj2017&#xff09; 概要&#xff1a;对于创业公司来说&#xff0c;成为“独角兽”甚至是“超级独角兽”&#xff0c;就意味离成功只有几步之遥。 对于创业公司来说&#xff0c;成为“独角兽”甚至是“超级独角兽…

MySQL Cookbook 学习笔记-03

1、INNER JOIN关联查询 2、outer join&#xff08;LEFT JOIN 与 RIGHT JOIN&#xff09; 3、自连接 4、主从表查询 5、在分组内查找某列最大或最小的一行 6、计算小组积分榜 7、计算连续行的差 8、计算“累计和”与运行时平均值 9、使用 JOIN 控制查询结果的顺序 10、通过 UNIO…

数据可视化--pyecharts绘图

pyecharts 是一个用于生成 Echarts 图表的类库。 Echarts 是百度开源的一个数据可视化 JS 库。主要用于数据可视化。 要使用pyecharts绘制地图&#xff0c;首先需要安装一下几个地图模块&#xff1a; 1、安装地图数据包&#xff0c;用于显示地图 pip install echarts-countri…

echart x轴标签偏移_1文搞懂真正的五轴加工中心,到底说的5轴是哪几个轴

随着国内数控技术的日渐成熟&#xff0c;近年来五轴联动数控加工中心在各领域得到了越来越广泛的应用。在实际应用中&#xff0c;每当人们碰见异形复杂零件高效、高质量加工难题时&#xff0c;五轴联动技术无疑是解决这类问题的重要手段。越来越多的厂家倾向于寻找五轴设备来满…

中国在国际上首次提出全液态量子器件与计算技术概念

来源&#xff1a;人民日报 概要&#xff1a;液态金属可以用来制造计算机核心电子元件&#xff0c;进而引发计算机的革命&#xff1f; 液态金属可以用来制造计算机核心电子元件&#xff0c;进而引发计算机的革命&#xff1f;不久前&#xff0c;我国一个研究小组发表了一项成果&…

MySQL Cookbook 学习笔记-04

1、处理重复 <a>、创建表包含 primary key 或 unique index&#xff0c;阻止重复数据写入 <b>、联合 <a>&#xff0c;使用 INSERT IGNORE 或 REPLACE <c>、检查表是否有重复行的方法&#xff0c;通过 group by 和 count( x ) 来统计 <d>、通…

如何使用frame框架,将左边视为导航栏,右边作为链接界面

在浏览网页时&#xff0c;我们经常会看到一个导航条&#xff0c;当点击导航条上的项目时&#xff0c;相应网页会在显示区域变换显示。那么如何将一个界面中&#xff0c;左边设置为导航栏&#xff0c;点击项目链接&#xff0c;则右边显示相应的内容呢&#xff1f;使用frameset框…

面对大规模AI集成,企业为何迟迟犹豫?

来源&#xff1a;亿欧 概要&#xff1a;首先&#xff0c;需要全面了解您的业务目标、技术需求以及AI对客户和员工的影响。需要解决的问题是&#xff0c;大多数员工面临着接受人工智能程度方面的挑战与担忧。 人工智能是实现流程自动化、降低运营成本和进创新的重要手段。尽管AI…

类的初始化

加载 ----> 连接&#xff08;验证&#xff0c;准备&#xff0c;解析*&#xff09; ---->初始化 Java 虚拟机在首次主动使用类型时初始化它们。 主动使用&#xff08;6种&#xff09; 1、创建类的实例 2、调用类中声明的静态方法 3、操作类或者接口中声明的非常量静态…

用定时器控制灯的闪烁梯形图_用西门子PLC设计灯的闪烁的梯形图,就只要梯形图。...

展开全部使用特32313133353236313431303231363533e58685e5aeb931333431373235殊标志寄存器即可实现你想要的功能&#xff0c;如果想要设计出亮的时间固定、灭的时间也固定的闪烁效果比较复杂。SM0.5 该位提供了一个时钟脉冲&#xff0c;0.5 秒为1&#xff0c;0.5 秒为0&#xf…

如何进行模糊分页

使用模糊分页需要3个参数:关键字&#xff1a;key,当前页&#xff1a;page,查询内容个数&#xff1a;count 核心代码&#xff1a; //所有菜单列表分页private void foodList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException …

PostgreSQL+安装及常见问题

postgresql-8.1-int.msi postgresql-8.1.msi &#xff08;点这个安装&#xff09; 前面一直用默认 1、到如下画面时注意&#xff1a; 重复账户时&#xff0c;报如下错误&#xff1a; 2、勾选所有连接都能使用该PostgreSQL 数据库&#xff0c;而不是仅仅支持 Localhost 3、…

post和get请求的区别

1.传送方式&#xff1a;get通过地址栏传输&#xff0c;post通过报文传输。 2.post请求无长度限制&#xff08;至少是理论上的&#xff09; &#xff1b;get有长度限制&#xff0c;最长不超过2048字节&#xff08;1024个汉字&#xff09; 3.Get/post 请求报文上的区别 get 和…

js 操作vuex数据_vue中使用vuex(超详细)

vuex是使用vue中必不可少的一部分,基于父子、兄弟组件,我们传值可能会很方便,但是如果是没有关联的组件之间要使用同一组数据,就显得很无能为力,那么vuex就很好的解决了我们这种问题,它相当于一个公共仓库,保存着所有组件都能共用的数据。 那么,我们一起来看看vue项目怎…

用脑科学支持人工智能

来源&#xff1a;中国科学报 概要&#xff1a;脑科学研究者正在揭示预测性运动控制神经机制&#xff0c;以脑科学基础研究支持人工智能发展并促进两大领域的深度融合。 最近&#xff0c;在国家自然科学基金&#xff08;项目号&#xff1a;31671075&#xff09;的支持下&#x…