JAVA比较器提出的背景:
java中的对象,正常情况下,只能用==或!=进行比较,不能使用>或<,但是在开发场景中,我们需要对多个对象进行排序;言外之意,就需要比较对象的大小,对于对象的排序该如何实现呢?
java实现对象排序的方法只有两种:
自然排序:Java.lang.Comparable
定制排序:java.util.Comparator
Comparable接口的使用:
《1》像String、包装类都实现了Comparable接口,重写了compareTo()方法,可以直接比较该类型对象的大小
import java.util.Arrays;
public class StringTest {
public static void main(String[] args) {
String[] string = {"AA", "KK", "BB", "NN", "CC"};
//调用Arrays工具类的sort()方法,对String数组进行排序
Arrays.sort(string);
//打印string数组
System.out.println(Arrays.toString(string));//[AA, BB, CC, KK, NN]
}
}
《2》自定义类实现Comparable接口,实现自然排序
重写compareTo(Object obj)的规则:
实现Comparable接口的类必须重写compareTo(Object obj)方法来指明两个对象如何排序,两个对象即通过 compareTo(Object obj)方法的返回值来比较大小。
分三种情况:
①如果当前对象this大于形参对象obj,则返回正整数;
②如果当前对象this小于形参对象obj,则返回负整数
③如果当前对象this等于形参对象obj,则返回零
按照商品价格从低到高排序:
import java.util.Arrays;
public class Goods implements Comparable{
public static void main(String[] args) {
Goods[] goods = new Goods[4];
goods[0]=new Goods("apple",5.0);
goods[1]=new Goods("orange",3.0);
goods[2]=new Goods("pineapple",8.0);
goods[3]=new Goods("peer",2.0);
Arrays.sort(goods);
System.out.println(Arrays.toString(goods));//[Goods{name='peer', price=2.0}, Goods{name=&#