2016-10-20 3 views
0

Ich habe einen Code gefunden, bei dem Comparable[] vor dem Array-Namen a geschrieben wurde. Ich verstehe nicht, was ist Comparable[] a und warum Comparable[] benötigt, um vor einem Array-Namen a zu deklarieren.Was ist vergleichbar [] in Java?

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

Es ist ein Array wie jedes andere Array. Es ist ein Array vom Typ 'Comparable'. – SLaks

+1

Was ist der Unterschied zwischen dem vergleichbaren Array []? und normales Array? – Zakk

+2

@Zakk Was ist in Ihrem Kopf ein "normales" Array? – Kayaman

Antwort

2

In Java-Typ-Deklarationen gehen Variablennamen voraus. Z.B. String b bedeutet, dass b eine Instanz der String Klasse ist. Java ist statisch eine stark typisierte Sprache.

So Comparable[] a sagt, dass a ist ein Array von Instanzen von einigen Klassen implementieren Comparable Schnittstelle. Das bedeutet, dass jedes der Elemente des Arrays entweder null oder etwas ist und die Methode compareTo hat. Siehe less Methode Implementierung und wahrscheinlich finden Sie compareTo Anrufe dort.

Einige Beispiele für Standardklassen Umsetzung vergleichbar:

  • Integer, new Integer[] {1, 2, 3, 4, 5} kann so werden als erstes Argument für diese Funktion
  • Double, geleitet, so kann new Double[] {1.5, 1.6, 1.8}
  • als erstes Argument übergeben werden String, so new String[] {"a", "b", "c"} kann als erstes Argument übergeben werden

Insgesamt diese Konstruktion ermöglicht es, die gleiche piec haben Der Code behandelt verschiedene Typen, die sich an eine ähnliche Schnittstelle halten (dh Sie müssen nicht für jede neue Klasse denselben Code schreiben). Sie können eine Klasse erstellen, die Comparable implementiert, und diesen Code für diesen Zweck wiederverwenden.

Siehe auch Comparable JavaDoc.