1. Jagged arrays
Som Java-programmør kan du ikke kun bytte rækkerne i et todimensionelt array, men også konstruere et array, som du vil.
Lad os sige, at du ønsker, at den første række i en todimensional matrix skal have en længde på 10
, og du ønsker, at længden af den anden række skal være 50
. Kan vi gøre det? Ja vi kan.
Først skal vi oprette en 'container af containere' - dette er det første array, som vil gemme referencer til arrays af rækker. Sådan gøres det:
int[][] name = new int[height][];
Du udelader simpelthen den anden dimension , og Java-maskinen opretter en container med containere. Dette er, hvad der vil være i hukommelsen efter udførelse af denne kode:
Og godt, du ved allerede, hvordan man opretter endimensionelle arrays 🙂
Sådan ser den resulterende kode ud:
|
Todimensional matrix Den nulte række er en matrix af 10 elementer Den første række er en matrix af 50 elementer |
Vi har netop oprettet et såkaldt " ravset array ".
Og hvis vi nu vil vise alle elementerne i dette array på skærmen, så vil arrayets length
egenskab komme godt med: Længden af arrayets rækker er trods alt forskellige.
Hvordan finder du i øvrigt længden af en 'container med containere' i vores eksempel? Det er også et array-objekt, hvilket betyder, at det har en længde. Det rigtige svar er matrix.length
.
Hvad med de arrays, der udgør vores rækker?matrix[0].length
2. Arbejde med et todimensionelt array
Antag, at du vil vise et todimensionalt array. Hvordan gør du det?
Vores kode vil se sådan ud:
|
Opret et array Fyld arrayet med værdier Ydre sløjfe, der itererer over rækkerne i arrayet. Indre sløjfe, der itererer over cellerne i en enkelt række. |
Du skal bruge to indlejrede løkker. Den første kalder vi ydre , og den anden - indre .
I den ydre løkke ( i
variablen) gennemgår vi sekventielt alle de rækker (arrays), der udgør vores todimensionelle array. Hver værdi af i
svarer til en række med det indeks.
I den indre løkke ( j
variablen) itererer vi over alle cellerne i rækkerne. Takket være den indre sløjfe vil en række, som består af værdierne af et endimensionelt array, blive vist på skærmen.
Dette er hvad der vil blive vist:
En række af arrayet behandles |
|
To rækker af arrayet behandles |
|
Tre rækker af arrayet behandles |
|
3. Multidimensionelle arrays
Endnu en interessant kendsgerning om arrays, en som du sikkert allerede har gættet. Hvis du kan lave et todimensionelt array, kan du så lave et tredimensionelt array?
Ja, du kan oprette en række af enhver dimension. Sådanne arrays kaldes 'flerdimensionelle'.
Lad os bare for sjovs skyld skabe et multidimensionelt array, der har 4 dimensioner.
int[][][][] matrix = new int[2][3][4][5];
Denne kode er for simpel, ikke?
Hvad hvis du opretter det manuelt?
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
}
}
Og det er bare at skabe arrayet! Så skal du også arbejde med det på en eller anden måde.
Bonusopgave: skriv kode, der viser alle værdierne i et tredimensionelt array.
GO TO FULL VERSION