我发现了一段代码,其中 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++];
}
最佳答案
在 java 中,类型声明在变量名之前。例如。 String b
表示b
是String
类的一个实例。 Java 是一种静态的强类型语言。
所以 Comparable[] a
表示 a
是某个实现了 Comparable
接口(interface)的类的实例数组。这意味着数组的每个元素要么是 null 要么是什么,具有 compareTo
方法。查看 less
方法实现,您可能会在那里找到 compareTo
调用。
几个标准类实现可比较的例子:
- 整数,所以
new Integer[] {1, 2, 3, 4, 5}
可以作为第一个参数传递给这个函数 - Double,所以
new Double[] {1.5, 1.6, 1.8}
可以作为第一个参数传递 - 字符串,所以
new String[] {"a", "b", "c"}
可以作为第一个参数传递
总的来说,这种构造允许让相同的代码段处理不同的类型,这些类型遵循相似的接口(interface)(这意味着您不必为您拥有的每个新类编写相同的代码)。您可以创建一些实现 Comparable
的类并为此重用此代码。
另见 Comparable JavaDoc .
关于java - Java 中的 Comparable[] 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40160839/