1、实现对象数组排序

(1)方法一,需要排序的对象所属的类实现Comparable接口,复写 comparaTo方法
 (2)方法二,需要排序的对象所属的类已经完成无法实现Comparable接口,这种情况用实现Comparator接口,需要自定义排序规则类 复写compare方法

2、实现List集合排序,和对象数组是一样的规则,只是最终排序调用的工具类是Collections.sort()方法

直接看代码:

方法一:学生Student类

<span style="font-size:14px;"><span style="font-size:18px;">package cn.com.lcx.model;public class Student implements Comparable<Student>{private String name;private int age;private double score;public String getName() {return name;}public Student(String name, int age, double score) {super();this.name = name;this.age = age;this.score = score;}public void setName(String name) {this.name = name;}public int getAge() {return age;}/*** 重写toString()方法,方便打印对象信息*/@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", score=" + score+ "]";}public void setAge(int age) {this.age = age;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}/*** 实现Comparable的compareTo 方法* 1表示大于,-1表示小于,0表示等于* 如果if条件和返回值表示一样(即if表达式是大于 返回值且是1)那么就是升序,反之则是降序*/@Overridepublic int compareTo(Student o) {/*** 按年龄降序(if条件和返回值相反) 年龄相同 按成绩升序(if条件和返回值相同)*/if(this.age> o.age){return -1;}else if(this.age< o.age){return 1;}else{if(this.score> o.score){return 1;}else if(this.score< o.score){return -1;}else{return 0;}}}
}
</span></span>

方法二:学生排序规则类StudentComparator,方法二适用与早已开发好的类,但是却没有实现Comparable接口

<span style="font-size:14px;"><span style="font-size:18px;">package cn.com.lcx.model;import java.util.Comparator;public class StudentComparator implements Comparator<Student>{/*** 实现Comparator的compare 方法* 1表示大于,-1表示小于,0表示等于* 如果if条件和返回值表示一样(即if表达式是大于 返回值且是1)那么就是升序,反之则是降序*/@Overridepublic int compare(Student o1, Student o2) {/*** 按年龄升序(if条件和返回值相同) 年龄相同 按成绩降序(if条件和返回值相反)*/if(o1.getAge()> o1.getAge()){return 1;}else if(o1.getAge()< o1.getAge()){return -1;}else{if(o1.getScore()> o2.getScore()){return -1;}else if(o1.getScore()< o2.getScore()){return 1;}else{return 0;}}}
}
</span></span>

主方法:StudentSort 类测试对象数组、List集合排序功能

<span style="font-size:14px;"><span style="font-size:18px;">package cn.com.lcx.test;import java.util.Arrays;
import java.util.Collections;
import java.util.List;import cn.com.lcx.model.Student;
import cn.com.lcx.model.StudentComparator;public class StudentSort {/*** @param args*/public static void main(String[] args) {/*** 1、实现对象数组排序* (1)方法一,需要排序的对象所属的类实现Comparable接口,复写 comparaTo方法* (2)方法二,需要排序的对象所属的类已经完成无法实现Comparable接口,* 这种情况用实现Comparator接口,需要自定义排序规则类 复写compare方法* 最终排序用Arrays.sort方法*/Student[] stuArr = {new Student("lwx-1", 10, 100),new Student("lwx-2", 30, 90),new Student("lwx-3", 30, 95),new Student("lwx-4", 30, 85),new Student("lwx-5", 20, 70),new Student("lwx-6", 40, 60)};//方法一实现Comparable接口System.out.println("实现Comparable接口,数组对象排序前----------");printArr(stuArr);System.out.println("实现Comparable接口,数组对象排序后----------");Arrays.sort(stuArr);printArr(stuArr);//方法二自定义排序规则类实现Comparator接口System.out.println("实现Comparator接口,数组对象排序后----------");Arrays.sort(stuArr,new StudentComparator());printArr(stuArr);/*** 2、实现List集合排序,和对象数组是一样的规则,只是最终排序调用的工具类是Collections.sort()方法*/Student[] stuArr2 = {new Student("lwx-4", 30, 85),new Student("lwx-5", 20, 70),new Student("lwx-6", 40, 60),new Student("lwx-1", 10, 100),new Student("lwx-2", 30, 90),new Student("lwx-3", 30, 95)};List<Student> stuList = Arrays.asList(stuArr2);//方法一实现Comparable接口System.out.println("实现Comparable接口,List集合排序前----------");printList(stuList);System.out.println("实现Comparable接口,List集合排序后----------");Collections.sort(stuList);printList(stuList);//方法二自定义排序规则类实现Comparator接口System.out.println("实现Comparator接口,List集合排序后----------");Collections.sort(stuList,new StudentComparator());printList(stuList);}/*** 打印对象数组元素* @param objArr*/public static void printArr(Object[] objArr){for(Object obj: objArr){System.out.println(obj);}}/*** 打印List集合中的元素* @param list*/public static void printList(List list){for(Object obj: list){System.out.println(obj);}}
}</span></span>

验证结果:

使用Comparable、Comparator接口实现对对象数组、List集合自定义排序相关推荐

  1. 后端接口如何接受对象数组

    后端接口如何接受对象数组 方式一:直接使用字符串接受 后端代码: @PostMapping("/addCommodityBatch")public String addCommod ...

  2. Java对象数组按照其属性排序的方法

    问题描述: 开发时我们希望用一个类表示某种物品, 用其域来描述物品的特性, 当我们有一组物品也就是一个对象数组时,我们会希望这组物品按照它的某个属性来排序 也就是需要对象数组按照其属性排序 一 类定义 ...

  3. java util包排序_实现java.util.Comparator接口,对对象集合进行多属性组合排序

    Commons - BeanUtils 提供了很多功能,其中一个很有用的是对对象集合进行排序,如Collections.sort(peoples, new BeanComparator("a ...

  4. JAVA-List排序-Collections.sort()-对象数组(集合)根据某一属性排序

    JAVA-List排序-Collections.sort() 当我们想对一个对象数组(集合)根据某一属性进行排序时,我们可以使用list中的Collection.sort(),这是一种较快捷的方式. ...

  5. java入门~第十六天 对象数组以及集合和相关数据结构

    1.对象数组 ​ 就是数组中的元素都是一个个的对象,但是并不是指对象本身,而是指的是对象的引用,即指向对象的那个指针,而这个指针是存放在虚拟机内存的栈中. ​ 对象数组的创建需要两个步骤: 1:创建一 ...

  6. 利用Collections.sort方法重写Comparator接口的compare方法对list集合排序

    Collections.sort()使用该方法实际是重写Comparator接口的compare方法实现排序://传入参数list集合,Comparator接口 T:list的元素类型 //如List ...

  7. java list集合自定义排序_Java 通过 Comparator comparing 对 list 自定义 排序

    摘要: 在日常开发中,经常会用到排序算法,这里记录下日常使用比较多的排序方法,其中包括按指定指定:正序.倒序排序,还有按自定义字段排序的方法,方便日后查看: 一:按指定字段排序,默认倒序,如下写法: ...

  8. angular8实现对象数组根据某个属性排序(多个也可以)

    代码中col是传进来的对象的属性名 toLowerCase()将字符串转换为小写. arrayInfos是数组,存储的是对象 这里我是配上一个上下切换的箭头使用的,点击切换上下方向并且排序 sort方 ...

  9. 学生对象数组实现按年龄排序 按成绩排序1022

    需求 按照需求实现功能

最新文章

  1. php 超长用省略号代替
  2. virtualbox 在物理机是无线网卡的时候做桥接配置 - juandx - 博客园
  3. UI组件之AdapterView及其子类关系,Adapter接口及其实现类关系
  4. 关于Mybatis的几个问题
  5. Android开发学习之录音同步播放的实现
  6. 戴尔服务器阵列卡的更换
  7. 找零钱问题系列之暴力搜索
  8. 父与子一起学python3_父与子的编程之旅:与小卡特一起学python
  9. TokenGazer评级丨TRON:BTT众筹谋求熊市破局,生态繁荣但数据受到质疑
  10. 0204隐函数及由参数方程所确定的函数的导数相关变化率-导数与微分
  11. 好玩的表情包机器人微信小程序源码下载支持直接搜索仿聊天界面
  12. ORACLE数据库练习题整理(2)
  13. 怎么在Excel中凑数
  14. 判断二极管导通例题_通信电源 | 1个二极管是如何改变电流的?
  15. 针对好玩游戏物品清单
  16. u, v风和风速风向的相互转换
  17. 【java】莱布尼兹公式求解pi值
  18. 项目中成功的运用proxool连接池
  19. 火爆全网送给女朋友的微信每日多次消息推送程序来了!多版本多平台!
  20. 第三课 用OD脱壳的基本方法

热门文章

  1. 干货!无需任何工具,实测macOS双开微信客户端
  2. linux 跑天龙八部游戏脚本,求推荐天龙八部脚本(能自动打怪,捡包之类的)
  3. python交流群教学视频_自学 Python,视频教程和代码一看就懂,动手就废,应该这么学...
  4. jsp javabean mysql_jsp mysql JavaBean
  5. Vue笔记-vue3中.en.dev文件及axios.defaults.baseURL的使用
  6. 系统架构工作笔记-数据展示进程与读取数据进程分离,实现低耦合(展示软件可适用任意厂家数据库)
  7. Java基础入门笔记-随机数
  8. 专业课程设计之客户与服务器程序的同步与通信机制的设计(二)TCP通信
  9. 二叉排序数的构造-理论
  10. 虚拟机centos7 桥接模式