Java: tablica dwuwymiarowa jest przechowywana w kolejności kolumnowo-dur czy rządowo-dur?

W języku Java, czy wielowymiarowa tablica jest przechowywana w kolejności kolumnowo-major czy rządowo-major?

Author: Community, 2011-07-09

3 answers

Java nie ma tablic wielowymiarowych. Posiada tablice tablic. Na przykład,

int[][]

... jest tablicą int[] (i oczywiście int[] jest tablicą int).

W związku z tym Java nie jest ani kolumną-majorem, ani wierszem-majorem (ale patrz uwaga poniżej o tym, jak czytać a[2][3]), ponieważ podczas gdy wpisy danej tablicy są przechowywane w ciągłym bloku pamięci, podrzędne tablice, na które wskazują, są odniesieniami do obiektów do zupełnie oddzielnych, niepowiązanych bloków pamięci. pamięć. Oznacza to również, że tablice tablic Javy są z naturypostrzępione : wpis w [0] może odnosić się do tablicy 3-slotowej, ten w [1] może odnosić się do tablicy 4-slotowej, [2] może w ogóle nie odnosić się do tablicy (może mieć null), a być może [3] odnosi się do tablicy 6-slotowej.

Zdjęcie jest warte 1k-24 słowa i takie tam:

                         +−−−−−−−−+
                   +−−−−>| int[]  |
+−−−−−−−−−−−+      |     +−−−−−−−−+
|  int[][]  |      |     | 0: int |
+−−−−−−−−−−−+      |     | 1: int |
| 0: int[]  |−−−−−−+     | 2: int |
| 1: int[]  |−−−−−−+     +−−−−−−−−+
| 2: null   |      |
| 3: int[]  |−−+   |     +−−−−−−−−+
+−−−−−−−−−−−+  |   +−−−−>| int[]  |
               |         +−−−−−−−−+
               |         | 0: int |
               |         | 1: int |
               |         | 2: int |
               |         | 3: int |
               |         +−−−−−−−−+
               |
               |         +−−−−−−−−+
               +−−−−−−−−−| int[]  |
                         +−−−−−−−−+
                         | 0: int |
                         | 1: int |
                         | 2: int |
                         | 3: int |
                         | 4: int |
                         | 5: int |
                         +−−−−−−−−+

Gdy już to wiesz, wiesz, że (powiedzmy) a[2][3] oznacza " Pobierz tablicę, do której odwołuje się wpis w indeksie 2 z a, wtedy uzyskaj wpis, do którego odwołuje się indeks 3 tej podrzędnej tablicy."Myślę, że jest to dość podobne do rzędu rzędów-głównych, ale to nie to samo.

 62
Author: T.J. Crowder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-22 18:19:49

W Javie macie tylko jedną tablicę wymiarową.

Tablice 2D są w zasadzie tylko jednowymiarowymi tablicami jednowymiarowymi.

int[ ][ ] table;

table = new int[3][ ];

table[0] = new int[5];

table[1] = new int[5];

table[2] = new int[5];
 3
Author: Kal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-23 06:29:46

Żadne. Tablica dwuwymiarowa w języku Java to tablica odwołań do tablic. Nie jest przechowywany liniowo w pamięci.

 2
Author: Andy Thomas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-08 22:03:16