/ Vergleichen von Arrays und Vergleichen jedes Elements in beiden Arrays - Java, Arrays, Objekt

Vergleichen von Arrays und Vergleichen jedes Elements in beiden Arrays - Java, Arrays, Objekt

Ich bin neu in Java. Bitte hilf mir.

Ich möchte Array-Objekte und jedes Element in beiden Arrays vergleichen. Also, was soll ich verwenden, um zu prüfen, ob sie gleich sind oder nicht? equals, deepEquals oder compareTo?

Antworten:

2 für die Antwort № 1

Ich bin mir nicht sicher, ob ich dein Problem verstehe, aber vielleicht hilft dir das ein wenig.

Arrays.equals(array1, array2) wird mit eindimensionalen Arrays wie verwendet int[10]. Arrays.deepEquals(array1,array2) ist für ein oder mehrere dimensionale Arrays wie int[2][4]. Wählen Sie basierend darauf aus, wie viele Dimensionen Arrays enthalten, die Sie vergleichen möchten.

BEARBEITEN

Ihr Code aus dem Kommentar wird nicht kompiliert, aber ich beginne Ihr Problem zu verstehen. Das musst du wissen Arrays sind Objekte und standardmäßig in equals(Object obj) Methode, die sie zurückgeben this == obj. Dies bedeutet, dass sie Arrays nicht nach Werten vergleichen, die in ihnen gespeichert sind, sondern nur prüfen, ob sie von einem anderen Objekt stammen obj (anderes Array) enthält einen Verweis auf das gleiche Array, aus dem Sie vergleichen (this).

Sie können es auf diese Weise überprüfen

Integer[] a1=new Integer[2];
Integer[] a2=new Integer[2];
for (int i=0; i<2; i++){
a1[i]=i;
a2[i]=a1[i];
}
System.out.println(a1.equals(a2));//false

aber wenn ich mich verändere i2 Bezug auf Punktarray von i1 Gleiches wird zurückkehren true

a2=a1;//now my i2 reference points array from i1
System.out.println(a1.equals(a2));//true

Um Elemente in Arrays zu vergleichen, müssen Sie das Array durchlaufen. Sie können Ihren eigenen Code schreiben, um es zu tun, oder fertige Methoden verwenden, die es für Sie tun. Java stellt solche Methoden in der Klasse zur Verfügung java.util.Arrays, aber niemand hält Sie davon ab, andere Bibliotheken wie Apache Commons -> ArrayUtils Klasse zu benutzen.


1 für die Antwort № 2

Wie die API sagt, ArrayUtils.equals macht einen flachen Vergleich. Arrays / ArrayUtils.deepEquals macht einen tiefen Vergleich ... << Dies ist wahrscheinlich der, den Sie wollen (deepEquals), es sei denn, Sie haben einen Grund, nur oberflächlichen Vergleich zu wünschen