java - Java 中的 Comparable[] 是什么?

标签 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++];
}

最佳答案

在 java 中,类型声明在变量名之前。例如。 String b 表示bString 类的一个实例。 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/

相关文章:

java - 将动画延迟放在属于 1 个动画集的 ImageView 和 TextView 上

java - 通过 Java 代码使用 JasperReports 创建 PDF 报告时出现 Unicode 问题

java - 我无法打开我的类,只能找到一个 BuildConfig 文件

java - Android奇怪的ComponentInfo NullPointerException

java - Play- 为什么使用逗号将字符串从字符串分割到列表无法正常工作?

java - 如何对 ElementCollection 和 CollectionTable 使用 CriteriaQuery

Java 字典就像 Python 中的字典一样

具有访客模式反射的 Java 泛型

java - 只是想知道我的 ListView 是否将用户引导到每个项目的新屏幕单击

java - 将代码从 java 转换为 c++ 的 mysql 连接器错误