Comparable接口&Comparator接口

Comparable用于比较实现Comparable的类的对象;Comparator用于比较没有实现Comparable的类的对象

Comparable接口

接口定义:

package java.lang

public interface Comparable{
    public int compareTo(E o);
}

compareTo方法判断这个对象相对于给定对象o的顺序,并且当这个对象小于、等于或大于给定对象o时,分别返回负整数、0或正整数。

JAVA类库中许多类都实现了该接口以定义对象的自然顺序。Byte, Short, Integer, Long, Float, Double, Character, BigInteger, BigDecimal, Calendar, String以及Date类都实现了Comparable接口。因此可以直接使用compareTo方法来比较两个数字、字符串、日期等。

System.out.print("ABC".compareTo("ABE"));

由于所有Comparable对象都有compareTo方法,若对象是Comparable接口类型的实例,Java API中的java.util.Arrays.sort(Object[])方法就可以使用compareTo方法来对数组中的对象进行比较和排序。

比较器接口Comparator

有时希望将元素插入到一个数集合中,这些元素可能不是java.lang.Comparable的实例。这时可以定义一个比较器来比较这些元素。要做到这一点,需要创建一个实现java.util.Comparator接口的类。Comparator接口有两个方法:compare和equals。

public int compare(Object element1, Object element2)

如果element1小于element2,返回负值;大于返回正值;相等返回0

public boolean equals(Object element)

如果指定的对象也是一个比较器,并且与这个比较器具有相同的排序,则返回true。
Object类中也定义了equals方法。所以,即使在自定义的比较器中没有实现equals方法,也不会出现编译错误。

你可能感兴趣的:(Comparable接口&Comparator接口)