1. Jagged arrays
Som Java-programmerer kan du ikke bare bytte rader i en todimensjonal matrise, men også konstruere en matrise slik du vil.
La oss si at du vil at den første raden i en todimensjonal matrise skal ha en lengde på 10
, og du vil at lengden på den andre raden skal være 50
. Kan vi gjøre det? Ja vi kan.
Først må vi lage en "beholder med containere" - dette er den første matrisen, som vil lagre referanser til matriser med rader. Slik gjøres det:
int[][] name = new int[height][];
Du utelater ganske enkelt den andre dimensjonen , og Java-maskinen lager en container med containere. Dette er hva som vil være i minnet etter å ha utført denne koden:
Og vel, du vet allerede hvordan du lager endimensjonale arrays 🙂
Slik vil den resulterende koden se ut:
|
Todimensjonal matrise Den nullte raden er en matrise av 10 elementer Den første raden er en matrise med 50 elementer |
Vi har nettopp laget en såkalt " tjaget array ".
Og hvis vi nå ønsker å vise alle elementene i denne arrayen på skjermen, så vil arrayens length
egenskap komme godt med: tross alt er lengdene på arrayens rader forskjellige.
Hvordan finner du forresten lengden på en 'container med containere' i vårt eksempel? Det er også et array-objekt, som betyr at det har en lengde. Det riktige svaret er matrix.length
.
Hva med matrisene som utgjør radene våre?matrix[0].length
2. Arbeide med en todimensjonal matrise
Anta at du vil vise en todimensjonal matrise. Hvordan gjør du det?
Koden vår vil se omtrent slik ut:
|
Lag en matrise Fyll matrisen med verdier Ytre løkke som itererer over radene i matrisen. Indre løkke som itererer over cellene i en enkelt rad. |
Du trenger to nestede løkker. Den første kaller vi ytre , og den andre - indre .
I den ytre sløyfen ( i
variabelen) går vi sekvensielt gjennom alle radene (matrisene) som utgjør vår todimensjonale matrise. Hver verdi av i
tilsvarer en rad med den indeksen.
I den indre løkken ( j
variabelen) itererer vi over alle cellene i radene. Takket være den indre løkken vil en rad, som består av verdiene til en endimensjonal matrise, vises på skjermen.
Dette er hva som vises:
Én rad i matrisen behandles |
|
To rader av matrisen behandles |
|
Tre rader av matrisen behandles |
|
3. Flerdimensjonale arrays
Et annet interessant faktum om arrays, en som du sikkert allerede har gjettet. Hvis du kan lage en todimensjonal matrise, kan du da lage en tredimensjonal matrise?
Ja, du kan lage en rekke av alle dimensjoner. Slike matriser kalles "flerdimensjonale".
Bare for moro skyld, la oss lage en flerdimensjonal matrise som har 4 dimensjoner.
int[][][][] matrix = new int[2][3][4][5];
Denne koden er for enkel, ikke sant?
Hva om du lager 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 å lage matrisen! Da må du også jobbe med det på en eller annen måte.
Bonusoppgave: skriv kode som viser alle verdiene i en tredimensjonal matrise.
GO TO FULL VERSION