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

第一种方法,去实现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. React-Native 使用真机和指定模拟器调试
  2. Excel 向程序发送命令时出现问题 解决方法 VS
  3. Deep Learning 教程翻译
  4. OpenGL ES之基本简介和渲染流程
  5. 单分支 两路分支和多分支的if结构_JavaScript学习笔记(二)-- 分支结构
  6. js 判断 是否在当前页面 当前页面是否在前端
  7. Spring Bean懒加载与非懒加载
  8. R count函数_【函数分享】PHP函数str_word_count()分享(202098)
  9. 服务器运维文章大合集
  10. linux+多个字符分割字符串数组中,怎样通过特定的分隔符将字符串分割成数组
  11. 步进电机选型的计算方法
  12. android超频闪退,显卡超频后玩游戏闪退 | 手游网游页游攻略大全
  13. 分析-MQ消息队列中间件-在IM即时通讯系统的用途
  14. rpm 如何安装mysql_如何使用rpm安装MySQL
  15. 慢就是快的人生哲理_慢一点人生哲理
  16. 计算机发展变化英文作文60词,生活中的变化英文作文(精选4篇)
  17. AppLocker 简要实验笔记
  18. 车联网技术 应用场景 各个领域方向(大方向分析)
  19. 破解webstrom2017
  20. 怎样学好高一数学,首先掌握这4种方法

热门文章

  1. LP38692MP-ADJ 德州TI 具有使能功能的 1A、10V、可调节低压降稳压器
  2. 基于主成分分析与Fisher判别的DNA序列分类
  3. P2069 松鼠吃果子
  4. 书签整理-程序员常用网站导航
  5. state_dict详解
  6. 小米智能家庭套装为什么选择 ZigBee 协议?
  7. python中valueerror是什么意思_python – ValueError:标签数为1.使用silhouett...
  8. 《士兵突袭》经典语录
  9. 【20200403】【每天一道算法题】从两个表中查询符合条件的学生名字,并按数学成绩降序排序
  10. 记一次黑苹果更换硬盘之旅