Java Array compare()
In Java wird beim Vergleichen von Arrays geprüft, ob zwei Arrays in Bezug auf Länge und Inhalt gleich sind. Java hat zwar keine eingebaute compare()
Methode speziell für Arrays, aber in der Klasse java.util.Arrays
gibt es Hilfsmethoden, die den Vergleich von Arrays erleichtern.
Methoden zum Vergleich von Arrays
Arrays.equals()
Die Methode Arrays.equals()
wird verwendet, um zwei Arrays auf Gleichheit zu vergleichen. Sie gibt true
zurück, wenn beide Arrays die gleiche Länge haben und die entsprechenden Elemente gleich sind. Diese Methode ist überladen, um Arrays verschiedener primitiver Typen und Objekt-Arrays zu behandeln.
Syntax
boolean result = Arrays.equals(array1, array2);
array1
undarray2
: Die zu vergleichenden Arrays.result
: Ein boolescher Wert, der angibt, ob die Arrays gleich sind.
Arrays.deepEquals()
Für mehrdimensionale Arrays wird Arrays.deepEquals()
verwendet. Diese Methode führt einen tiefen Vergleich von Arrayelementen durch, das heißt, sie vergleicht verschachtelte Arrays Element für Element.
Syntax
boolean result = Arrays.deepEquals(array1, array2);
array1
undarray2
: Die zu vergleichenden Arrays.result
: Ein boolescher Wert, der angibt, ob die Arrays zutiefst gleich sind.
Arrays.compare()
Die Methode Arrays.compare()
vergleicht zwei Arrays lexikografisch. Sie gibt 0
zurück, wenn die Arrays gleich sind, eine negative ganze Zahl, wenn das erste Array lexikografisch kleiner ist, und eine positive ganze Zahl, wenn das erste Array lexikografisch größer ist. Diese Methode kann für Arrays verschiedener Typen wie Boolean, Byte, Char usw. verwendet werden.
Syntax
int result = Arrays.compare(array1, array2);
array1
undarray2
: Die zu vergleichenden Arrays.result
: Eine ganze Zahl, die das Ergebnis des lexikografischen Vergleichs angibt.
Beispiele
Beispiel 1: Primitive Arrays vergleichen
import java.util.Arrays;
public class ComparePrimitiveArrays {
public static void main(String[] args) {
int[] array1 = {1, 2, 3};
int[] array2 = {1, 2, 3};
boolean isEqual = Arrays.equals(array1, array2);
System.out.println("Are the primitive arrays equal? " + isEqual);
}
}
In diesem Beispiel wird Arrays.equals()
verwendet, um zwei Integer-Arrays zu vergleichen. Da beide Arrays die gleichen Elemente in der gleichen Reihenfolge enthalten, gibt die Methode true
zurück.
Beispiel 2: Vergleich von mehrdimensionalen Arrays
import java.util.Arrays;
public class CompareMultidimensionalArrays {
public static void main(String[] args) {
int[][] array1 = {{1, 2}, {3, 4}};
int[][] array2 = {{1, 2}, {3, 4}};
boolean isEqual = Arrays.deepEquals(array1, array2);
System.out.println("Are the multidimensional arrays equal? " + isEqual);
}
}
In diesem Beispiel wird Arrays.deepEquals()
verwendet, um zwei 2D-Arrays zu vergleichen. Die Methode gibt true
zurück, weil die Arrays in Struktur und Inhalt identisch sind.
Beispiel 3: Lexikografischer Vergleich von Arrays
import java.util.Arrays;
public class CompareArraysLexicographically {
public static void main(String[] args) {
String[] array1 = {"Apple", "Banana"};
String[] array2 = {"Apple", "Cherry"};
int comparisonResult = Arrays.compare(array1, array2);
System.out.println("Comparison result: " + comparisonResult);
}
}
In diesem Beispiel wird Arrays.compare()
verwendet, um zwei String-Arrays lexikografisch zu vergleichen. Die Methode gibt eine negative ganze Zahl zurück, weil "Banane" lexikografisch kleiner ist als "Kirsche".
Tipps und bewährte Praktiken
- Verwende die richtige Methode: Verwende
Arrays.equals()
für eindimensionale Arrays undArrays.deepEquals()
für mehrdimensionale Arrays, um genaue Vergleiche zu gewährleisten. - Vermeide einen Referenzvergleich: Vermeide es,
==
zum Vergleichen von Arrays zu verwenden, da es auf Referenzgleichheit und nicht auf Inhaltsgleichheit prüft. - Umgang mit Null-Arrays: Sei vorsichtig, wenn du Arrays vergleichst, die
null
sein könnten. Erwäge das Hinzufügen von Nullprüfungen, umNullPointerException
zu verhindern. - Berücksichtige die Leistung: Bei großen Arrays solltest du die Auswirkungen von tiefen Vergleichen auf die Leistung berücksichtigen, da sie sehr rechenintensiv sein können.