分享好友 最新动态首页 最新动态分类 切换频道
java sort 排序多个_在Java中使用Collections.sort 依据多个字段排序
2024-12-26 17:54

一、如何使用Collections工具类进行排序

java sort 排序多个_在Java中使用Collections.sort 依据多个字段排序

使用Collections工具类进行排序主要有两种方式

1.对象实现Comparable接口,重写compareTo方法

@Data

@AllArgsConstructor

public class Student implements Comparable {

String name;

int age;

@Override

public int compareTo(Object o) {

Student stu = (Student) o;

//this-参数:升序;参数-this:降序

return this.age - stu.age;

}

}

public class Test01 {

public static void main(String[] args) {

List stuList = new ArrayList<>();

stuList.add(new Student("abc", 17));

stuList.add(new Student("cab", 18));

Collections.sort(stuList);

System.out.println(stuList);

}

}

2.传入一个比较器对象Comparator。

还是用上面的student,不去实现Comparable接口。

public class Test02 {

public static void main(String[] args) {

List stuList = new ArrayList<>();

stuList.add(new Student("abc", 19));

stuList.add(new Student("cab", 18));

Collections.sort(stuList, new Comparator() {

@Override

public int compare(Student o1, Student o2) {

return o1.age - o2.age;

}

});

System.out.println(stuList);

}

}

二、依据多个字段排序

当需求要求先按第一个字段排序,如果第一个字段相同,则按第二个字段排序,如果第二个相同,则按第三个字段... 可以定义多个Comparator,并依次使用。

@Data

@AllArgsConstructor

public class Student {

// 编号

private String id;

// 身高

private int height;

// 体重

private int weight;

}

public class Test03 {

public static void main(String[] args) {

Student s1 = new Student("1", 180, 80);

Student s2 = new Student("2", 175, 80);

Student s3 = new Student("3", 175, 90);

List students = new ArrayList<>();

students.add(s1);

students.add(s2);

students.add(s3);

System.out.println("原始排序" + students);

//按照身高升序排序

Comparator byHeight = Comparator.comparing(Student::getHeight);

//按照体重升序排序

Comparator byWeight = Comparator.comparing(Student::getWeight);

//将list先按照"身高"升序再按照"体重"升序排列

students.sort(byHeight.thenComparing(byWeight));

//将list先按照"身高"升序再按照"体重"升序排列

System.out.println("优先身高" + students);

//将list先按照"体重"升序再按照"身高"升序排列

students.sort(byWeight.thenComparing(byHeight));

//将list先按照"身高"升序再按照"体重"升序排列

System.out.println("优先体重" + students);

}

}

python 中的sort 和java中的Collections&period;sort&lpar;&rpar;函数的使用

x=[1,2,3] x.sort()对的,x这个都变了 y=x.sort()错误 y=sorted(x)对的,x拍好序的一个副本 python中用匿名函数和自定义函数排序:(很奇怪的是比较函数返回的是 ...

Java中使用Collections&period;sort&lpar;&rpar;方法对数字和字符串泛型的LIst进行排序

在List的排序中常用的是Collections.sort()方法,可以对String类型和Integer类型泛型的List集合进行排序. 首先演示sort()方法对Integer类型泛型的List排 ...

Java—集合框架 Collections&period;sort&lpar;&rpar;、Comparable接口和Comparator接口

Collentions工具类--java.util.Collections Collentions是Java集合框架中,用来操作集合对象的工具类,也是Java集合框架的成员,与List.Map和Set ...

【Java】Java中的Collections类——Java中升级版的数据结构【转】

一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数 ...

Java中的Collections类

转载:https://blog.csdn.net/yangxingpa/article/details/80515963 从[Java]Java中的Collections类——Java中升级版的数据结 ...

java中List对象列表去重或取出以及排序

面试碰到几次list的去重和排序.下面介绍一种做法: 1. list去重 1.1 实体类Student List容量10k以上,要求去重复.这里Student的重复标准是 ...

java中的TreeMap如何顺序按照插入顺序排序

java中的TreeMap如何顺序按照插入顺序排序 你可以使用LinkedHashMap  这个是可以记住插入顺序的. 用LinkedHashMap吧.它内部有一个链表,保持插入的顺序.迭代的时候,也 ...

用Java集合中的Collections&period;sort方法对list排序的两种方法

用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

Java Collections&period;sort方法对list集合排序

1.排序测试类 package com.ljq.test; import java.util.ArrayList; import java.util.Collections; import java. ...

随机推荐

分组统计并计算每组数量sql

有 字段A 和B比如数据如下A  B1  21  31  4 2  22  3 统计出的sql结果: A   count 1   3 2   2 select a,count(b) from t gr ...

IOS下移除按钮原生样式 -webkit-appearance

IOS环境下的按钮都是经过美化的,但通常我们在设计web app的时候不需要这些看上去老土的样式,所以,去除这些显得很有必要. 下面这句代码就是重置这些样式的: -webkit-appearance: ...

excel的变量

因需要定制游戏的公式,公式是以一个系数乘以等级,我想达到修改系数,每个等级对应的值就立即显示出来, 但把系数写在一个单元格,一拉,系数单元格也会跟着增长行数--不是我想要的: 但只要把系数单元格改成变 ...

Unity3d ngui基础教程

Unity3d ngui基础教程 NGUI教程:步骤1-Scene 1.创建一个新的场景(New Scene).2.选择并删除场景里的MainCamera.3.在NGUI菜单下选择Create a N ...

android 屏幕适配1 ——dimens&period;xml的适配

1.如果是才开始做项目,已经有设计图:720*1280 1).默认values文件夹:1dp=1px values/dimens_x.xml: name: x1~x720   value:1px~72 ...

BZOJ2961 共点圆&lbrack;CDQ分治&rsqb;

题面 bzoj 其实就是推一下圆的式子 长成这个样子 假设要查询的点是(x, y) 某个圆心是(p, q) ((x - p)^2 + (y - q)^2 leq p^2 + q^2) 变成 ( ...

Python初学者第二十二天 函数进阶(1)

22day 1.函数命名空间: 2.函数作用域的查找顺序:LEGB locals->enclosing function ->globals ->_builtins_ a.local ...

高级选项更改MathType数学公式样式

MathType中系统的样式有很多种,我们将通过示例来演示如何更改样式定义达到修改等式的目的.使用样式将允许你迅速且方便的获得一种格式,这种格式将使你创建的等式具有统一的风格. 以下步骤中,我们将创建 ...

Maven Jetty插件使用

最新文章
活动策划的10个维度
活动策划,是营销推广中的重要一环。品牌要想活起来,销售要想动起来,都离不开活动。像我们平时经常提到的事件营销、传播campaign、用户参与、终端促销、电商大促、品牌发布会、订货会、经销商大会……这些都属于活动的范畴。活动策划是一
英国留学条件有些什么 就读优势有哪些
英国大学是非常出名的,英国一直以传统优秀的教学而闻名世界,因此很多的同学都会选择前往英国进行留学,那么“英国留学条件有些什么”呢,让我们一起来简单的了解一下吧。1、学历要求高中留学:申请英国高中留学,学生通常需要完成初中阶
祈际网络|同城达人本地探店抖音推广费用是多少?
本地达人探店作为一种新兴的营销方式,其费用构成因达人的粉丝等级、推广方式和运营模式而异。祈际网络凭借其专业的服务和深入的市场洞察,为品牌提供了多样化的探店营销解决方案,帮助品牌实现成本效益最大化。祈际网络作为一个有着丰富实
【漫画推荐】韩漫推荐
​​1.《乖乖女恋爱指南》    我们的女主郑小乖人如其名,是个乖乖女,爱好列日程表,是个每天完成日程表的每一项就觉得很幸福的人。因为受学长美色的诱惑加入了编(you)程(xi)社团。撞破了男主在玩女号的事,以帮助她追学长为交换条
淘宝游戏店铺开店流程,怎么开店?
随着移动互联网以及智能移动终端设备在我国的快速发展,我国游戏市场用户规模持续增长,其中移动游戏的快速发展远超端游和页游,我国游戏市场逐步确立了以发展移动游戏为主的发展态势。很多商家想要开一个游戏类的专营店铺却不知道怎么申请
怎样让百度快速收录的新方法
百度从在07年10月份至今收录新站以及索引站点都不是那么速度,就具体情况中国SEO联盟Dragon提出-----如何让百度快速收录新方法!  1.在百度提交网址 但现在百度自动收录的速度已经让众人所知,所以提出以下的方法。供我亲爱的朋友们、战友
显示器能效测试怎么做?
显示器是一种可以将电子文件显示到屏幕上的输入输出设备,在我们日常生活中比较常见。显示器厂家在产品出厂前一般会办理显示器能效测试,本文将为您介绍显示器能效测试办理流程。显示器能效测试标准为GB24850。GB 24850标准适用于在电网电
超平民的华为系百瓦级超级快充方案,只要56元即可搞定——淘宝购入的拆机华为智选100W充电器使用评测
之前看到酷安上有一篇图文推荐这个拆机头,看起来还不错,价格也美丽(甚至相比原文的标价还降价了),遂购入。虽然我自己用的红米,但家人用的华为系,买一个做备用头也可以。本文所评测产品为本人自费购买,无利益相关。评测设备为业余设
把别人照片发到朋友圈违法吗
第一步,工伤认定程序  1.发生工伤后单位应当自事故伤害发生之日或者被诊断、鉴定为职业病之日起30日内,向统筹地区社会保险行政部门提出工伤认定申请。;单位未按规定提出工伤认定的,职工必须在1年内提出工伤认定的申请。  2.劳动者提
谷歌SEO中,什么是link wheeling策略?
在数字化时代,搜索引擎优化(SEO)已成为企业网络营销战略中的核心环节。通过提高网站在搜索引擎结果页面(SERP)上的排名,企业能够吸引更多的目标流量,进而转化为潜在客户和实际销售。而我,作为一名在SEO领域摸爬滚打多年的实践者,深
相关文章
推荐文章
发表评论
0评