什么是Java中的Comparable []?

时间:2016-10-20 17:29:16

标签: java

我找到了一个代码,其中Comparable[]写在数组名a之前。 我不明白在数组名称Comparable[] a之前需要声明Comparable[]a为什么。

public static void merge(Comparable[] a, int lo, int mid, int hi)
{
    // Merge a[lo..mid] with a[mid+1..hi].
    int i = lo, j = mid+1;
    for (int k = lo; k <= hi; k++) // Copy a[lo..hi] to aux[lo..hi].
        aux[k] = a[k];
    for (int k = lo; k <= hi; k++) // Merge back to a[lo..hi].
        if (i > mid) a[k] = aux[j++];
        else if (j > hi ) a[k] = aux[i++];
        else if (less(aux[j], aux[i])) a[k] = aux[j++];
        else a[k] = aux[i++];
}

1 个答案:

答案 0 :(得分:3)

在java类型声明中,在变量名之前。例如。 String b表示bString类的实例。 Java是一种静态的强类型语言。

所以Comparable[] aa是实现Comparable接口的某个类的实例数组。使用compareTo方法表示每个数组的元素都为null或其他内容。请参阅less方法实施,您可能会在那里找到compareTo次来电。

实现可比较的标准类的一些示例:

  • 整数,因此new Integer[] {1, 2, 3, 4, 5}可以作为此函数的第一个参数传递
  • Double,因此new Double[] {1.5, 1.6, 1.8}可以作为第一个参数传递
  • 字符串,因此new String[] {"a", "b", "c"}可以作为第一个参数传递

总体而言,构造允许使用相同的代码处理不同类型的代码,这些代码遵循类似的接口(这意味着您不必为每个新类编写相同的代码)。您可以创建一些实现Comparable的类,并为此重用此代码。

另见Comparable JavaDoc