这里主要探讨的是对对象的排序

第一种方法,去实现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两种排序的方法相关推荐

  1. 按照姓名升序排序的代码_好程序员Java培训分享Java集合的两种排序方法

    好程序员Java培训分享Java集合的两种排序方法,Java集合的工具类Collections中提供了两种排序的方法,分别是: 1.Collections.sort(List list) 2.Coll ...

  2. 两种排序方法(直接判断)

    题目描述 考拉有n个字符串字符串,任意两个字符串长度都是不同的.考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序.例如: "car" < "car ...

  3. 【字符串2】(删除公共字符、合法括号序列判断、两种排序方法、密码强度等级)

    字符串题集 1. 删除公共字符 题目描述 题目分析 C++代码 2. 合法括号序列判断 题目描述 题目分析 C++代码 3. 两种排序方法 题目描述 题目分析 C++代码 4. 密码强度等级 题目描述 ...

  4. 刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

    目录 选择题模块 1. 以下对继承的描述错误的是(A) 2. 在Java中,一个类(B) 3. 以下不是Object 类的方法的是(D) 4. Test.main() 函数执行后的输出是(D) 编程题 ...

  5. python 两种排序方法 sort() sorted()

    python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法 区别为: sort()方法对list排序会修改list本身,不会返回新list.sort()只 ...

  6. Java两种排序方式快慢比较

    2019独角兽企业重金招聘Python工程师标准>>> Java中List的排序方式有两种,现在我们测试下这两种排序方式的快慢吧,我们需要用到两个类, 一个是运行程序的Main类,另 ...

  7. GET和POST两种基本请求方法的区别

    GET和POST两种基本请求方法的区别 回退 回退时无害 会再次提交请求 记录 URL可被记录, 用于再访问 不可以 缓存 主动缓存 可手动设置 编码方式 只进行url编码 多种编码方式 参数长度 有 ...

  8. 哈希查找解决地址冲突的两种最常见方法(线性探测再散列,链地址法)C++实现

    哈希查找解决地址冲突的两种最常见方法(线性探测再散列,链地址法)C++实现 参考文章: (1)哈希查找解决地址冲突的两种最常见方法(线性探测再散列,链地址法)C++实现 (2)https://www. ...

  9. mysql中两次排序_MySQL中的两种排序方式: index和filesort

    index :通过有序索引顺序扫描直接返回有序数据,不需要额外的排序,操作效率较高. filesort:通过对返回数据进行排序,filesort 并不代表通过磁盘文件排序,而是说明进行了一个排序操作, ...

最新文章

  1. 记一次接收微信公众平台推送消息的实例
  2. BZOJ 2127: happiness
  3. Android 如何添加一种锁屏方式
  4. sklearn——AdaBoost应用
  5. linux锁定账号 让其不能修改密码,passwd - 用于让用户可以更改自己的密码
  6. AI人工智能 / ML机器学习专业词汇集
  7. python2.3嵌套if结构:
  8. 单平台软件开发多系统APP
  9. win11提示无法安装程序包时该怎么办
  10. xcode 找不到头文件
  11. lstm 预测诗歌_预测诗歌运动
  12. .NET EF(Entity Framework)详解
  13. a标签下载图片 text
  14. 什么叫Jour-fix
  15. php检查数据库记录,php-检查数据库中是否有新条目
  16. Android App 专项性能监控工具
  17. Redis的集群配置
  18. TensorFlow进阶--实现学习率随迭代次数下降
  19. Cycript基本语法与使用-iOS逆向工程
  20. android 4.0 更换鼠标图案

热门文章

  1. 如何在Mac上使用Movavi Picverse给黑白照片上色?
  2. linux内核acpi,从内核模块探讨ACPI与BIOS及OS之关系
  3. 关于c语言的调侃句子,if编程搞笑语句
  4. 腾讯视频:内容丰富的移动视频应用
  5. GD32实现USB HID自定义复合设备
  6. 探索第三方 API 服务的身份验证方法:优点和缺点
  7. cefsharp已停止工作_Winform下CefSharp的引用、配置、实例与报错排除(源码)
  8. c语言图像剪影代码,信息系C语言社团活动剪影-南京商业学校.PDF
  9. 高性能linux构建Cf游戏,构建CF卡Linux系统的几个常见难题
  10. 创业板改革,为啥要选注册制?