1. Nierówne tablice

W Javie jako programista możesz nie tylko zamieniać miejscami wiersze dwuwymiarowej tablicy, ale także samodzielnie konstruować tę tablicę tak, jak chcesz.

Powiedzmy, że chcesz, aby pierwszy wiersz dwuwymiarowej tablicy miał długość 10, a drugi — długość 50. Czy można to zrobić? Tak, możesz.

Najpierw musisz utworzyć „kontener kontenerów” - pierwszą tablicę, która będzie przechowywać odwołania do tablic łańcuchowych. Robi się to tak:

int[][] Nazwa = new int[высота][];

Po prostu nie określasz drugiego parametru , a maszyna Java tworzy tylko „kontener kontenerów”. Oto, co będzie w pamięci po wykonaniu tego kodu:

postrzępione tablice w Javie

Cóż, wiesz już, jak tworzyć tablice jednowymiarowe 🙂

Oto jak będzie wyglądał ostateczny kod:

// Важная матрица с данными
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50];
Tablica dwuwymiarowa Linia

zerowa to tablica 10elementów
Pierwsza linia to tablica 50elementów.

Właśnie utworzyłeś tak zwaną „ poszarpaną tablicę ”.

A teraz, jeśli chcemy wyświetlić wszystkie elementy tej tablicy na ekranie, lengthwłaściwość array bardzo nam się przyda: długości łańcuchów tablicy są różne.

Nawiasem mówiąc, jak znaleźć długość „kontenera kontenerów” w naszym przykładzie? Jest to również obiekt tablicowy, co oznacza, że ​​ma długość. Prawidłowa odpowiedź to matrix.length.

A co z tablicami łańcuchowymi?matrix[0].length



2. Praca z tablicą dwuwymiarową

Powiedzmy, że chcesz wyświetlić tablicę dwuwymiarową. Jak to zrobić?

Nasz kod będzie wyglądał mniej więcej tak:

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();
}
Tworzenie tablicy
Wypełnianie tablicy wartościami


Zewnętrzna pętla przez wiersze tablicy — przechodzi przez wiersze tablicy.
Wewnętrzna pętla komórek — iteruje po komórkach jednego wiersza.

Będziesz potrzebował dwóch zagnieżdżonych pętli. Pierwszy nazwiemy zewnętrznym , a drugi wewnętrznym .

W pętli zewnętrznej (zmienna i) przechodzimy po kolei przez wszystkie tablice łańcuchowe, które składają się na naszą dwuwymiarową tablicę. Każda wartość zmiennej iodpowiada wierszowi tablicy o tej liczbie.

W pętli wewnętrznej (zmienna j) przechodzimy przez wszystkie komórki tablicy ciągów. W wyniku działania pętli wewnętrznej na ekranie zostanie wyświetlony ciąg składający się z wartości jednego wiersza tablicy.

Oto, co zostanie wyświetlone na ekranie:

Przetworzono jeden wiersz tablicy
1 2 3 4 5 6 
Przetworzono dwa wiersze tablicy
1 2 3 4 5 6
1 2 3 
Przetworzono trzy wiersze tablicy
1 2 3 4 5 6
1 2 3
1 


3. Tablice wielowymiarowe

I jeszcze jeden ciekawy fakt o tablicach, który zapewne już znasz. Jeśli potrafisz stworzyć dwuwymiarową tablicę, to czy możesz zrobić trójwymiarową?

Tak, możesz utworzyć tablicę o dowolnym wymiarze. Takie tablice nazywane są „wielowymiarowymi”.

Stwórzmy dla zabawy wielowymiarową tablicę wymiaru 4.

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

Zbyt prosty kod, nie sądzisz?

Co jeśli utworzysz go ręcznie?

int[][][][] matrix;
matrix = new int[2][][][];                // создаем массив «ссылок на ссылки на ссылки» длины 2
for (int i = 0; i < matrix.length; i++)
{
  matrix[i] = new int[3][][];             // создаем массив «ссылок на ссылки» длины 3
  for (int j = 0; j < matrix[i].length; j++)
  {
    matrix[i][j] = new int[4][];          // создаем массив ссылок длины 4
    for (int k = 0; k < matrix[i][j].length; k++)
      matrix[i][j][k] = new int[5];       // создаем массивы целых чисел длины 5
  }
}

A to tylko tworzenie tablicy! Ale nadal musisz jakoś z nim pracować.

Dodatkowym wyzwaniem jest napisanie kodu wyświetlającego wszystkie wartości tablicy 3D.