阿里云建设个人网站,wordpress表格线,wordpress登入页面,wordpress 注册填密码Comparator VS Comparable1. Comparator1.1 对一维数组进行排序1.2 对二维数组进行排序1.3 对对象数组进行排序2. Comparable3. 二者区别1. Comparator
通过源码发现Comparator是一个接口。 根据compare方法中的注释可以发现方法返回三种类型的值#xff0c;正数、零、负数正数、零、负数分别对应 小于等于大于。 1前面的数 后面的数是降序从大到小的如果想要改为升序排列就需要返回 1 -1前面的数 后面的数是升序从小到大的不改变位置就返回 -1 0二者相等不进行交换也就不排序。但是要根据题目来判断返回什么。如果数组是无序的不能直接返回0。 若保证升序排列要返回o1 - o2降序则 o2 - o1。 o1值的是集合中的第一个对象o2是第二个对象 return 0:不交换位置不排序 return 1:交换位置 return -1:不交换位置 下面将对Comparator接口的用法进行讲解
对一维数组进行排序。对二维数组进行排序。对对象数组进行排序。
1.1 对一维数组进行排序
使用Arrays类中的sort方法直接对ages进行排序默认排序方式为升序。 使用匿名内部类对数据这里要求数组不能为基本类型的素组可以转化为基本数据类型对应的包装类进行降序排列 return o1 - o2; -- 升序排列return o2 - o1; -- 降序排列1.2 对二维数组进行排序
使用Arrays类中的sort方法如下所示 1.3 对对象数组进行排序
创建Student学生实体类
public class Student {private int age;private String name;private double height;// setXXX/getXXX构造方法toString方法
}直接对Strudent数据进行排序可以发现对实体类数组直接进行排序会报错。 结合Comparator对Strudent数组按照年龄从低到高进行排序: 结合Comparator对Strudent数组按照身高从高到底进行排序: 2. Comparable
使用场景假如说我们有这样一个需求需要设计一个Student类有两个属性姓名name、年龄age和身高height按照年龄的大小进行排序那么就可以使用Comparable进行实现注意区别Comparator
首先创建Student类并实现ComparableT接口 按照年龄升序排列ComparatorT其中泛型T为比较器可以比较的对象的类型在这里面为Person 首先创建Student类并实现ComparableT接口 按照年龄降序排列 首先创建Student类并实现ComparableT接口 按照身高升序排列 首先创建Student类并实现ComparableT接口 按照身高降序排列 3. 二者区别
Comparable 和 Comparator 的区别
java.lang.Comparable在类定义的时候可以实现好的接口里面有compareTo这个方法需要实现。java.util.Comparator是挽救的比较接口假如我们需要对别人给Person类进行排序但是Person类里面没有Comparable接口如果在不允许改变源代码的情况下我们就可以使用Comparator接口需要单独定义一个比较类里面有compare比较方法。