比较器有两种方法哦!
方法一:实现接口Comparable,覆写compareTo()完成比较
如果最开始的类在设计时就需要排序功能时就可以使用这个方法!!!!
这是最常用的一种方法也是今天小编重点介绍的方法哟!
小编以范例为主来介绍今天的内容哈!!!!
package com.xy.text; //包名
import java.lang.reflect.Array;
import java.util.Arrays;
public class Person implements Comparable<Person> { //implements(实现) Comparable(接口) <Person>(尖括号里的是需要比较的对象)
private String name; //定义私有的名称
private int age; //定义私有的年龄
public Person(String name, int age) { //构造器
this.name = name;
this.age = age;
}
@Override
public String toString() { //覆写的toString方法,输出内容
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public static void main(String[] args) {
Person Arrper[] = { //定义一个对象数组,其中的对象如下
new Person("张三", 13), //创建一个新的对象Person,这个对象中的为张三,13岁
new Person("李四", 23),
new Person("王五", 18),
new Person("刘六", 18),
new Person("小七", 29)
};
Arrays.sort(Arrper); //调用Arrays.sort(),可以对对象进行升序排序,此时已经排好序了,但是输出的是数组对象的地址
for (int i = 0; i < Arrper.length; i++) { //对对象数组进行遍历输出
System.out.println(Arrper[i]);
}
}
@Override
public int compareTo(Person per) { //覆写的compareTo方法进行比较
//按照年龄从低到高排序
if (this.age > per.age) { //this.age是指当前的年龄 per.age是指对象中的age
return 1;
} else if (this.age < per.age) {
return -1;
} else if (this.age == per.age) { //如果年龄一样大,那么就利用String中的比较器compareTo,String中的compareTo()的作用是,按照字母表顺序来排序
return per.name.compareTo(this.name); /按照名字第一个字母来排序
}
return 0;
}
}
具体的都在代码注释里解释啦!
方法二:实现接口Comparator (当初此类没有排序功能,后来需要排序功能,使用Comparator接口)
第二中方法不太常用,小编也不太了解,等小编了解到了再做分享啦!!!!
(小编也在努力学习更多哟!以后会多多分享哒!)
希望对友友们有所帮助!!!!