关于ArrayList两种排序的方法
这里主要探讨的是对对象的排序
第一种方法,去实现Comparable接口并重写compareTo方法,然后再用Collections去调用sort方法,在sort方法里面添加list对象进行排序
,但是这种方法是直接将排序的规则写死,不利于以后代码的维护,下面将举一个例子来演示
先写一个实体类
public class Worker implements Comparable<Worker>{private int age;private String name;private double salary;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}public Worker(int age, String name, double salary) {this.age = age;this.name = name;this.salary = salary;}@Overridepublic String toString() {return "Worker{" +"age=" + age +", name='" + name + '\'' +", salary=" + salary +'}';}@Overridepublic int compareTo(Worker o) {/*** 按照age进行排序* */// return this.age-o.age;/*** 按照name排序,这里和按照age排序有点不一样,因为类型是字符串,不能直接用加减,需要去调用compareTo去比较* */return this.name.compareTo(o.name);} }
再写一个测试类
public class Test {public static void main(String[] args) {List<Worker> list=new ArrayList<>();//在list中添加几个对象list.add(new Worker(15,"张3",3522.0));list.add(new Worker(17,"张1",3512.0));list.add(new Worker(16,"张2",3532.0));//排序Collections.sort(list);//输出System.out.println(list);} }
第二种方法是直接用Collections去调用sort方法,但这个sort方法含有两个参数,一个参数是list,另一个参数是new一个Comparator<Worker>,然后再去重写compare方法。
下面是示例;
先创建一个实体类
public class Worker {private int age;private String name;private double salary;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}public Worker(int age, String name, double salary) {this.age = age;this.name = name;this.salary = salary;}@Overridepublic String toString() {return "Worker{" +"age=" + age +", name='" + name + '\'' +", salary=" + salary +'}';}}
再创建一个测试类
public class Test {public static void main(String[] args) {List<Worker> list=new ArrayList<>();//在list中添加几个对象list.add(new Worker(15,"张3",3522.0));list.add(new Worker(17,"张1",3512.0));list.add(new Worker(16,"张2",3532.0));//排序Collections.sort(list, new Comparator<Worker>() {@Overridepublic int compare(Worker o1, Worker o2) {/*** 按照name排序* */// return o1.getName().compareTo(o2.getName());/*** 按照age排序* */return o1.getAge()-o2.getAge();}});System.out.println(list);} }
关于ArrayList两种排序的方法相关推荐
- 按照姓名升序排序的代码_好程序员Java培训分享Java集合的两种排序方法
好程序员Java培训分享Java集合的两种排序方法,Java集合的工具类Collections中提供了两种排序的方法,分别是: 1.Collections.sort(List list) 2.Coll ...
- 两种排序方法(直接判断)
题目描述 考拉有n个字符串字符串,任意两个字符串长度都是不同的.考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序.例如: "car" < "car ...
- 【字符串2】(删除公共字符、合法括号序列判断、两种排序方法、密码强度等级)
字符串题集 1. 删除公共字符 题目描述 题目分析 C++代码 2. 合法括号序列判断 题目描述 题目分析 C++代码 3. 两种排序方法 题目描述 题目分析 C++代码 4. 密码强度等级 题目描述 ...
- 刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】
目录 选择题模块 1. 以下对继承的描述错误的是(A) 2. 在Java中,一个类(B) 3. 以下不是Object 类的方法的是(D) 4. Test.main() 函数执行后的输出是(D) 编程题 ...
- python 两种排序方法 sort() sorted()
python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法 区别为: sort()方法对list排序会修改list本身,不会返回新list.sort()只 ...
- Java两种排序方式快慢比较
2019独角兽企业重金招聘Python工程师标准>>> Java中List的排序方式有两种,现在我们测试下这两种排序方式的快慢吧,我们需要用到两个类, 一个是运行程序的Main类,另 ...
- GET和POST两种基本请求方法的区别
GET和POST两种基本请求方法的区别 回退 回退时无害 会再次提交请求 记录 URL可被记录, 用于再访问 不可以 缓存 主动缓存 可手动设置 编码方式 只进行url编码 多种编码方式 参数长度 有 ...
- 哈希查找解决地址冲突的两种最常见方法(线性探测再散列,链地址法)C++实现
哈希查找解决地址冲突的两种最常见方法(线性探测再散列,链地址法)C++实现 参考文章: (1)哈希查找解决地址冲突的两种最常见方法(线性探测再散列,链地址法)C++实现 (2)https://www. ...
- mysql中两次排序_MySQL中的两种排序方式: index和filesort
index :通过有序索引顺序扫描直接返回有序数据,不需要额外的排序,操作效率较高. filesort:通过对返回数据进行排序,filesort 并不代表通过磁盘文件排序,而是说明进行了一个排序操作, ...
最新文章
- 记一次接收微信公众平台推送消息的实例
- BZOJ 2127: happiness
- Android 如何添加一种锁屏方式
- sklearn——AdaBoost应用
- linux锁定账号 让其不能修改密码,passwd - 用于让用户可以更改自己的密码
- AI人工智能 / ML机器学习专业词汇集
- python2.3嵌套if结构:
- 单平台软件开发多系统APP
- win11提示无法安装程序包时该怎么办
- xcode 找不到头文件
- lstm 预测诗歌_预测诗歌运动
- .NET EF(Entity Framework)详解
- a标签下载图片 text
- 什么叫Jour-fix
- php检查数据库记录,php-检查数据库中是否有新条目
- Android App 专项性能监控工具
- Redis的集群配置
- TensorFlow进阶--实现学习率随迭代次数下降
- Cycript基本语法与使用-iOS逆向工程
- android 4.0 更换鼠标图案
热门文章
- 如何在Mac上使用Movavi Picverse给黑白照片上色?
- linux内核acpi,从内核模块探讨ACPI与BIOS及OS之关系
- 关于c语言的调侃句子,if编程搞笑语句
- 腾讯视频:内容丰富的移动视频应用
- GD32实现USB HID自定义复合设备
- 探索第三方 API 服务的身份验证方法:优点和缺点
- cefsharp已停止工作_Winform下CefSharp的引用、配置、实例与报错排除(源码)
- c语言图像剪影代码,信息系C语言社团活动剪影-南京商业学校.PDF
- 高性能linux构建Cf游戏,构建CF卡Linux系统的几个常见难题
- 创业板改革,为啥要选注册制?