说明
在java中接口Comparable使我们经常要接触到的,比如对集合或者数组进行排序,我们经常使用到Arrays.sort()或者Collections.sort()
(注:集合或数组排序也是应用Comparable实现的,具体过程可以查看详细源码)
如:
public class Test{
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
Random rd = new Random();
for (int i = 0; i < 10; i++)//通过随机函数给list赋值
list.add(rd.nextInt(100));
for (int i : list)//输出原始list
System.out.print(i + " ");
Collections.sort(list);//对list排序
for (int i : list)//输出排序后的list
System.out.print(i + " ");
}
}
我们来看看Comparable接口详情:
//接口详情
public interface Comparable<T> {
public int compareTo(T o);
}
我们可以看到,该接口是个泛型类(接口是特殊类),那我们就知道了:除了能对Java原生态类型的集合或者数组进行排序外,还可以对我们自定义的集合类进行排序,不过我们必须得重写Comparable接口的compareTo()方法。
compareTo()方法返回值为int,我们在重写该方法的时候只需要根据自身需求(排序的原则或依据),自定义实现过程,然后在集合或数组排序的地方调用即可。