„Amigo, ich hoffe, du hast inzwischen erkannt, wie nützlich Arrays beim Programmieren sind?“

„Auf jeden Fall, Rishi! Ich habe schon mehr als eine Aufgabe gelöst.“

„Hatten Ihre Aufgaben sich wiederholende Aktionen? Die Art, die Sie immer und immer wieder gemacht haben.“

„Wenn ich Sie richtig verstanden habe, meinen Sie ähnliche Aktionen in verschiedenen Aufgaben? Zum Beispiel überall eine Schleife verwenden, um den Inhalt eines Arrays anzuzeigen – ich habe es so satt, das zu tun!“

„Ja, das meine ich. Den Entwicklern von Java ist aufgefallen, dass Java-Programmierer oft den gleichen Code schreiben, wenn sie mit Arrays arbeiten. Zum Beispiel Code, um einen Teil eines Arrays in ein anderes Array zu kopieren, oder Code, um jede Zelle eines Arrays mit demselben Code zu füllen Wert. Oder Ihr Beispiel: Code, um den Inhalt eines Arrays in lesbarer Form auf dem Bildschirm anzuzeigen.

„Und echte Programmierer haben eine sehr wichtige Regel: Wiederholen Sie sich nicht. Sie werden zustimmen, dass es falsch ist, überflüssige Arbeit zu leisten – Sie werden dafür nicht bezahlt. Effektive Arbeit wird gut bezahlt, glauben Sie mir. Übrigens, ein Neuling Code ist sofort an der großen Menge an sich wiederholendem Code erkennbar.

„Die Entwickler von Java haben darüber nachgedacht und die spezielle ArraysKlasse (deren vollständiger Name lautet java.util.Arrays) erstellt, in der sie die beliebtesten Array-bezogenen Aktionen integriert haben.“

„Hmm... Sehr interessant. Was hat es also genau?

„Es gibt viele Methoden für jeden Anlass, aber zunächst betrachten wir nur zehn davon – die einfachsten und am häufigsten verwendeten.“

Arrays.toString()

„Die erste Methode, die wir uns ansehen werden, ist Arrays.toString()… Aber zuerst ein wenig Hintergrundwissen.“

„Jedes Array in Java verfügt über eine toString()Methode, die eine ‚Textdarstellung des Arrays‘ zurückgibt. Sie können eine Textdarstellung eines Arrays mit der folgenden Anweisung erhalten:

String str = name.toString();

„Wo nameist der Name der Array-Variablen und strder Name der Variablen, die die String-Darstellung des Arrays speichert? Amigo, haben Sie versucht, mit dieser Methode ein Array auf dem Bildschirm auszugeben?“System.out.println(name)

Ich gestehe, das ist passiert. Ich habe etwas Kauderwelsch gesehen. Ich beschloss, Gefahren aus dem Weg zu gehen und weiterhin Schleifen zu verwenden.

„Höchstwahrscheinlich haben Sie etwas gesehen wie:

I@37afeb11

„Der erste Buchstabe Ibedeutet, dass es sich um ein intArray handelt, und die Symbole danach @sind die Adresse eines einzelnen Objekts im Speicher. Man kann es sich als die Adresse des Arrays im Speicher vorstellen. Einerseits sind dies genau die darin gespeicherten Informationen Array-Variable, aber andererseits haben Sie etwas anderes erwartet, nicht wahr?“

„Genau! Ich hatte vor, die Werte im Array zu sehen. Das war das Letzte, was ich erwartet hatte.“

„Und genau deshalb haben sie die Methode entwickelt Arrays.toString()– um die Werte eines Arrays anzuzeigen. Wir nennen es so:

String str = Arrays.toString(name);

Beispiele:

int[] array = {1, 2, 3};
String str = Arrays.toString(array);
Die strVariable enthält die Zeichenfolge"[1, 2, 3]"
int[] array = {};
String str = Arrays.toString(array);
Die strVariable enthält die Zeichenfolge"[]"
String[] array = {"Hi", "How's", "life?"};
String str = Arrays.toString(array);
Die strVariable enthält die Zeichenfolge"[Hi, How's, life?]"

Arrays.deepToString()

„Allerdings toString()ist die Methode nicht ausreichend, wenn es um zweidimensionale Arrays geht. Mit anderen Worten: Wenn Sie versuchen, aufzurufen Arrays.toString(), werden Sie etwas Bekanntes sehen:

[I@37afeb11, I@37afeb21, I@37afeb31]

„Das liegt daran, dass die Zellen eines zweidimensionalen Arrays Verweise auf eindimensionale Arrays speichern. Und wie werden eindimensionale Arrays in einen String umgewandelt? Genau wie Sie oben sehen.“

„Was ist dann zu tun? Wie stellen wir ein zweidimensionales Array korrekt dar?“

„Auch die Entwickler von Java haben damit gerechnet. Zu diesem Zweck Arraysverfügt die Klasse über eine weitere spezielle Methode – deepToString(). Der Aufruf sieht so aus:

String str = Arrays.deepToString(name);

„Dieser Methode können Arrays übergeben werden, die zweidimensional, eindimensional, dreidimensional oder allgemein jede Dimension sind, und sie zeigt immer die Elemente des Arrays an.“

Beispiele:

int[] array = {1, 2, 3};
String str = Arrays.deepToString(array);
Die strVariable enthält die Zeichenfolge"[1, 2, 3]"
int[][] array = { {1, 1}, {2, 2}, {3, 3} };
String str = Arrays.deepToString(array);
Die strVariable enthält die Zeichenfolge"[[1, 1], [2, 2], [3, 3]]"
int[][][] array = { {{1, 2, 3}, {1}}, {{}} };
String str = Arrays.deepToString(array);
Die strVariable enthält die Zeichenfolge"[[[1, 2, 3], [1]], [[]]]"

Arrays.equals()

„Wir haben herausgefunden, wie man Arrays auf dem Bildschirm anzeigt. Wie wäre es mit dem Vergleichen von Arrays? Erinnern Sie sich, welche Methoden wir zum Vergleichen von Zeichenfolgen verwenden können?“

„Normalerweise wende ich die equalsMethode an!

„Ja, equalsund auch equalsIgnoreCase(wobei Zeichenfolgen ohne Rücksicht auf Groß- und Kleinschreibung verglichen werden).

„Gute Nachricht: Sie können die Methode auch für Arrays verwenden equals. Schlechte Nachricht: Sie vergleicht nicht den Inhalt von Arrays. Die equalsMethode von Arrays macht dasselbe wie der ==Operator – sie vergleicht Referenzen.

Beispiele:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1 == x2;
false(Die Referenzen sind nicht gleich)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1.equals(x2);
Die equalsMethode arraysvergleicht einfach die Referenzen zweier Arrays.

false(Die Referenzen sind nicht gleich)

„Was machen wir also? Wie vergleichen wir Arrays anhand ihres Inhalts?“

„Wieder Arrayskommt uns die Klasse zu Hilfe. Genauer gesagt, ihre Arrays.equals()Methode. So nennen wir sie:

Arrays.equals(name1, name2)

„Die Methode gibt zurück true, wenn die Arrays gleich lang sind und ihre Elemente gleich sind. Andernfalls gibt sie zurück false.

Beispiele:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1.equals(x2);
Die equalsMethode arraysvergleicht einfach die Referenzen zweier Arrays.

false(Die Referenzen sind nicht gleich)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
Arrays.equals(x1, x2);


true(die Inhalte sind gleich)
int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3, 4};
Arrays.equals(x1, x2);


false(Die Inhalte der Arrays sind unterschiedlich)

Arrays.deepEquals()

„Und wie Sie wahrscheinlich bereits vermutet haben, Arrays.equalsfunktioniert die Methode bei zweidimensionalen Arrays nicht richtig: Sie behandelt zweidimensionale Arrays wie ein eindimensionales Array, dessen Elemente Adressen eindimensionaler Arrays sind.

„Um mehrdimensionale Arrays ( n = 1, 2, 3,... ) korrekt vergleichen zu können, haben sie sich die Methode ausgedacht Arrays.deepEquals(). Der Aufruf sieht so aus:

Arrays.deepEquals(name1, name2)

„Die Methode gibt zurück true, wenn die Arrays gleich lang sind und ihre Elemente gleich sind. Andernfalls wird zurückgegebenfalse. Wenn die Elemente innerhalb des Arrays ebenfalls Arrays sind, Arrays.deepEquals()wird die Methode verwendet, um sie zu vergleichen, und so weiter.

Beispiele:

int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};

x1.equals(x2);
Die equalsMethode arrays vergleicht einfach die Referenzen zweier Arrays.

false(Die Referenzen sind nicht gleich)
int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};

Arrays.equals(x1, x2);
Die Arrays.equalsMethode vergleicht und als eindimensionale Arrays, die Referenzen speichern. Sie enthalten unterschiedliche Referenzen. (Die Inhalte der Arrays sind nicht gleich) x1x2
false
int[][] x1 = {{1, 2, 3}, {4, 5, 6}};
int[][] x2 = {{1, 2, 3}, {4, 5, 6}};

Arrays.deepEquals(x1, x2);



true(die Inhalte sind gleich)

„Danke, Rishi! Diese Lektion ist genau das, was ich brauchte, um mein Leben in Zukunft einfacher und glücklicher zu machen. Jetzt werde ich die Methoden der Arrays-Klasse verwenden und meine Programme noch schneller schreiben.“

„Damit habe ich gerechnet, ha-ha. Aber das sind nicht alle interessanten Methoden in der Arrays-Klasse. Ich werde Ihnen beim nächsten Mal von anderen erzählen.“