/ / Vergleichen von zwei Arrays in separaten 2D-Arrays - Java, Gleiches, mehrdimensionales Array, Arrays

Vergleich zweier Arrays in separaten 2D-Arrays - Java, Equals, Multidimensional-Array, Arrays

Ich habe zwei separate 2D-Arrays. Jedes enthält kleinere Arrays, die Paare von int-Werten sind. Das erste 2D-Array ist die Eingabeinformation, das andere 2D-Array enthält Werte, nach denen gesucht oder gesucht werden soll.

Zum Beispiel lautet das Eingabefeld:

{{0, 1}, {0, 2}, {2, 1}, {1, 0}, {0,1}}

Das zweite Referenzfeld enthält alle möglichen Wertekombinationen aus dem ersten:

{{0, 0}, {0,1}, {0,2}, {1, 0}, {1, 1}, {1, 2}, {2, 0}, {2, 1}, {2, 2}}

Ich möchte die Eingabe nehmen und feststellen, obSubarray i ist gleich einem der Referenz-Subarrays. Ich möchte, dass die Ergebnisse in einem eindimensionalen Array von derselben Größe wie die Referenz sind, mit einer Zählung für die Anzahl, wie oft jedes Subarray im Eingabefeld gefunden wurde. Das resultierende Array sollte also so aussehen:

{0, 2, 1, 1, 0, 0, 0, 1, 0}

Dies ist mein Versuch am Code:

int[] ResultArray = new int[ReferenceArray.Length];

for (int i = 0; i < ReferenceArray.Length; i++)
{
for (int j = 0; j < InputArray.length; j++)
{
if (InputArray[j] == RefereenceArray[i])
ResultArray[i]++;
}
}

Aus irgendeinem Grund wird dies kompiliert, aber zu ResultArray wird nichts hinzugefügt. Als ich versuchte zu benutzen

Arrays.equal(InputArray[j], ReferenceArray[i])

Stattdessen bekomme ich einen Fehler beim Kompilieren. Irgendeine Idee, was ist schief gelaufen? Ich hatte einen ähnlichen Codeblock, der gut funktioniert hat, und kann nicht herausfinden, wo das Problem liegt.

Antworten:

4 für die Antwort № 1

== (auf einem Object type) testet immer die Referenzidentität. Sie können verwenden Arrays.deepEquals(Object[], Object[]) indem Sie dies ändern

if (InputArray[j] == RefereenceArray[i])

zu etwas wie

if (Arrays.deepEquals(InputArray[j], RefereenceArray[i]))