1. ArraysKlasse

Wie bereits erwähnt, sind Arrays sehr nützlich und werden häufig in der Programmierung verwendet.

Den Java-Entwicklern fiel sehr schnell auf, dass Java-Programmierer bei der Arbeit mit Arrays oft den gleichen Code schreiben. Kopieren Sie beispielsweise einen Teil eines Arrays in ein anderes Array, füllen Sie jede Zelle eines Arrays mit demselben Wert, zeigen Sie den Inhalt eines Arrays in einem praktischen Format an usw.

Aus diesem Grund haben sie die spezielle ArraysKlasse (ihr vollständiger Name lautet java.util.Arrays) erstellt und darin die beliebtesten Array-bezogenen Aktionen integriert.

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


2.Arrays.toString()

Die erste Methode, die wir uns ansehen werden, heißt Arrays.toString(). Aber zuerst ein kleiner Hintergrund.

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

String str = name.toString();

Wobei nameist der Name der Array-Variablen und strder Name der Variablen, die die Zeichenfolgendarstellung des Arrays speichert.

Wenn Sie jedoch versuchen, das Array mit dieser Methode auf dem Bildschirm auszugeben , werden Sie höchstwahrscheinlich etwas wie Folgendes sehen:System.out.println(name)

I@37afeb11

Der erste Buchstabe Ibedeutet, dass es sich um ein intArray handelt, und die Symbole danach @geben die Adresse des Arrays im Speicher an. Einerseits sind das genau die Informationen, die in der Array-Variablen gespeichert sind, andererseits haben wir aber etwas anderes erwartet, oder?

Wir wollten die Werte im Array sehen! Und genau aus diesem Grund 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?]"


3.Arrays.deepToString()

Wenn Sie jedoch versuchen, ein zweidimensionales Array in eine String- using the Arrays.toString()Methode (zur Anzeige) umzuwandeln, werden Sie etwas Bekanntes sehen:

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

Dies 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 kann getan werden? Wie stellen wir ein zweidimensionales Array korrekt dar?

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 beliebig dimensioniert sind, und sie zeigt immer die Elemente des Arrays an.
Hinweis: Die Arrays.deepToString()Methode funktioniert nicht mit eindimensionalen Arrays von Grundelementen (z. B. int[]).

Beispiele:

Integer[] 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]], [[]]]"


4.Arrays.equals()

Wir haben herausgefunden, wie man Arrays auf dem Bildschirm anzeigt, aber wie sieht es mit dem Vergleichen von Arrays aus?

Um Strings zu vergleichen, haben wir equalsund equalsIgnoreCase-Methoden, aber welche Methoden haben Arrays?

Die gute Nachricht ist, dass Arrays eine equalsMethode haben. Die schlechte Nachricht ist, dass der Inhalt der Arrays nicht verglichen wird. Die equalsArray-Methode macht dasselbe wie der ==Operator – sie vergleicht Referenzen. Beispiele:

Beispiele:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
boolean b = 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 kann getan werden? Wie vergleichen wir Arrays anhand ihres Inhalts?

Und wieder Arrayskommt uns das zu Hilfe, oder genauer gesagt, seine Arrays.equals()Methode. So nennen wir es:

Arrays.equals(name1, name2)

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

Beispiele:

int[] x1 = {1, 2, 3};
int[] x2 = {1, 2, 3};
x1.equals(x2);
Die equalsMethode arrays vergleicht 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)

5.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 die Methode entwickelt Arrays.deepEquals(). Der Aufruf sieht so aus:

Arrays.deepEquals(name1, name2)

Die Methode gibt zurücktruewenn die Arrays gleich lang sind und ihre Elemente gleich sind. Andernfalls wird es 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)