1. Gezackte Arrays

Als Java-Programmierer können Sie nicht nur die Zeilen eines zweidimensionalen Arrays austauschen, sondern auch ein Array nach Ihren Wünschen erstellen.

Nehmen wir an, Sie möchten, dass die erste Zeile eines zweidimensionalen Arrays eine Länge von hat 10, und Sie möchten, dass die Länge der zweiten Zeile beträgt 50. Können wir das tun? Ja wir können.

Zuerst müssen wir einen „Container von Containern“ erstellen – dies ist das erste Array, das Verweise auf Arrays von Zeilen speichert. So wird es gemacht:

int[][] name = new int[height][];

Sie lassen einfach die zweite Dimension weg und die Java-Maschine erstellt einen Container mit Containern. Folgendes wird nach der Ausführung dieses Codes im Speicher sein:

Gezackte Arrays in Java

Und nun, Sie wissen bereits, wie man eindimensionale Arrays erstellt 🙂

So sieht der resultierende Code aus:

// Matrix of important data
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50]
Zweidimensionales Array.

Die nullte Zeile ist ein Array von 10Elementen.
Die erste Zeile ist ein Array von 50Elementen

Wir haben gerade ein sogenanntes „ Jagged Array “ erstellt.

Und wenn wir nun alle Elemente dieses Arrays auf dem Bildschirm anzeigen wollen, dann lengthist die Eigenschaft des Arrays praktisch: Schließlich sind die Längen der Zeilen des Arrays unterschiedlich.

Wie ermitteln Sie übrigens die Länge eines „Containers mit Containern“ in unserem Beispiel? Es ist auch ein Array-Objekt, was bedeutet, dass es eine Länge hat. Die richtige Antwort ist matrix.length.

Wie wäre es mit den Arrays, aus denen unsere Zeilen bestehen?matrix[0].length



2. Arbeiten mit einem zweidimensionalen Array

Angenommen, Sie möchten ein zweidimensionales Array anzeigen. Wie machst du das?

Unser Code wird in etwa so aussehen:

int[][] matrix = new int[3][];
matrix[0] = new int[]{1, 2, 3, 4, 5, 6};
matrix[1] = new int[]{1, 2, 3};
matrix[2] = new int[]{1};
for (int i = 0; i < matrix.length; i++) {
   for (int j = 0; j < matrix[i].length; j++)
      System.out.print( matrix[i][j] + " " );
   System.out.println();
}
Erstellen Sie ein Array.
Füllen Sie das Array mit Werten.


Äußere Schleife, die die Zeilen des Arrays durchläuft.
Innere Schleife, die die Zellen einer einzelnen Zeile durchläuft.

Sie benötigen zwei verschachtelte Schleifen. Das erste nennen wir „außen“ und das zweite „ inner“ .

In der äußeren Schleife (der iVariablen) durchlaufen wir nacheinander alle Zeilen (Arrays), aus denen unser zweidimensionales Array besteht. Jeder Wert von ientspricht einer Zeile mit diesem Index.

In der inneren Schleife (der jVariablen) iterieren wir über alle Zellen in den Zeilen. Dank der inneren Schleife wird auf dem Bildschirm eine Zeile angezeigt, die aus den Werten eines eindimensionalen Arrays besteht.

Folgendes wird angezeigt:

Eine Zeile des Arrays wird verarbeitet
1 2 3 4 5 6
Zwei Zeilen des Arrays werden verarbeitet
1 2 3 4 5 6
1 2 3
Drei Zeilen des Arrays werden verarbeitet
1 2 3 4 5 6
1 2 3
1


3. Mehrdimensionale Arrays

Noch eine interessante Tatsache über Arrays, die Sie wahrscheinlich bereits erraten haben. Wenn Sie ein zweidimensionales Array erstellen können, können Sie dann ein dreidimensionales Array erstellen?

Ja, Sie können ein Array beliebiger Dimension erstellen. Solche Arrays werden „multidimensional“ genannt.

Lassen Sie uns zum Spaß ein mehrdimensionales Array mit vier Dimensionen erstellen.

 int[][][][] matrix = new int[2][3][4][5];

Dieser Code ist zu einfach, nicht wahr?

Was ist, wenn Sie es manuell erstellen?

int[][][][] matrix;
matrix = new int[2][][][];                // Create a 2-element array of references to references to references
for (int i = 0; i < matrix.length; i++)
{
  matrix[i] = new int[3][][];                // Create a 3-element array of references to references
  for (j = 0; j < matrix[i].length; j++)
  {
    matrix[i][j] = new int[4][];             // Create a 4-element array of references
    for (k = 0; k < matrix[i][j].length; k++)
      matrix[i][j][k] = new int[5];          // Create 5-element arrays of integers
  }
}

Und das ist nur die Erstellung des Arrays! Dann muss man auch irgendwie damit arbeiten.

Bonusaufgabe: Code schreiben, der alle Werte in einem dreidimensionalen Array anzeigt.