2016-10-20 11 views
0

配列名aの前に、Comparable[]と書かれたコードが見つかりました。 Comparable[] aは何ですか、なぜComparable[]が配列名aの前に宣言する必要があるのか​​分かりません。JavaでComparable []とは何ですか?

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

これは他の配列と同様に配列です。それは 'Comparable'と呼ばれる型の配列です。 – SLaks

+1

comparable []配列の違いは何ですか?通常の配列ですか? – Zakk

+2

@ Zakk "普通の"配列は何ですか? – Kayaman

答えて

2

変数名の前にjava型宣言があります。例えば。 String bは、bStringクラスのインスタンスであることを意味します。 Javaは静的で強く型付けされた言語です。

したがってComparable[] aは、aは、Comparableインターフェイスを実装するいくつかのクラスのインスタンスの配列であると言います。配列の要素のそれぞれがヌルか何かであることを意味し、compareToメソッドを持っています。 lessメソッドの実装を参照してください。おそらくcompareToが呼び出されます。標準クラスの

いくつかの例が同等の実装:

  • 整数を、そうnew Integer[] {1, 2, 3, 4, 5}
  • ダブルは、そうnew Double[] {1.5, 1.6, 1.8}は、最初の引数として渡すことができます。この機能には、最初の引数として渡すことができます
  • 文字列なので、最初の引数としてを渡すことができます。

全体的には同じpiecコードでは、同様のインターフェースを遵守する異なるタイプを扱います(つまり、新しいクラスごとに同じコードを書く必要はありません)。 Comparableを実装するクラスをいくつか作成し、このコードを再利用することができます。

Comparable JavaDocも参照してください。

関連する問題