我找到了一个代码,其中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++];
}
答案 0 :(得分:3)
在java类型声明中,在变量名之前。例如。 String b
表示b
是String
类的实例。 Java是一种静态的强类型语言。
所以Comparable[] a
说a
是实现Comparable
接口的某个类的实例数组。使用compareTo
方法表示每个数组的元素都为null或其他内容。请参阅less
方法实施,您可能会在那里找到compareTo
次来电。
实现可比较的标准类的一些示例:
new Integer[] {1, 2, 3, 4, 5}
可以作为此函数的第一个参数传递new Double[] {1.5, 1.6, 1.8}
可以作为第一个参数传递new String[] {"a", "b", "c"}
可以作为第一个参数传递总体而言,构造允许使用相同的代码处理不同类型的代码,这些代码遵循类似的接口(这意味着您不必为每个新类编写相同的代码)。您可以创建一些实现Comparable
的类,并为此重用此代码。