Arbeta med matriser i Java

Om ett program måste arbeta med ett antal värden av samma datatyp kan du förklara en variabel för varje nummer. Till exempel ett program som visar lotterinummer:

int lotteryNumber1 = 16;
int lotteryNumber2 = 32;
int lotteryNumber3 = 12;
int lotteryNumber4 = 23;
int lotteryNumber5 = 33;
int lotteryNumber6 = 20;

Ett mer elegant sätt att hantera värden som kan grupperas är att använda en matris. En matris är en behållare som har ett fast antal värden av en datatyp. I exemplet ovan kan lotterinumren grupperas i ett int array:

int [] lotteryNumbers = 16,32,12,23,33,20; 

Tänk på en matris som en rad lådor. Antalet rutor i arrayen kan inte ändras. Varje ruta kan innehålla ett värde så länge det är av samma datatyp som värdena i de andra rutorna. Du kan titta inuti en ruta för att se vilket värde den innehåller eller ersätta innehållet i rutan med ett annat värde. När man talar om matriser kallas rutorna element.

Förklara och initiera en matris

Deklarationsförklaringen för en matris liknar den som används för att deklarera alla andra variabler. Den innehåller datatypen följt av namnet på matrisen - den enda skillnaden är att inkludera fyrkantiga parenteser bredvid datatypen:

int [] intArray;
float [] floatArray; 
char [] charArray;

I deklarationerna ovan säger kompilatorn att

intArray
variabel är en matris med
ints
,
floatArray
är en matris med
flottörer
och
charArray
är en mängd chars. Som alla variabler kan de inte användas förrän den har initialiserats genom att tilldela ett värde. För en matris måste tilldelningen av ett värde till en matris definiera storleken på en matris:
intArray = new int [10]; 

Siffran inom parenteserna definierar hur många element matrisen har. Ovanstående uppdragsbeskrivning skapar en int array med tio element. Naturligtvis finns det ingen anledning till att deklarationen och tilldelningen inte kan ske i ett uttalande:

float [] floatArray = new float [10]; 

Matriser är inte begränsade till primitiva datatyper. Matriser av objekt kan skapas:

String [] names = new String [5]; 

Använda en matris

När en array har initialiserats kan elementen ha värden tilldelade dem med hjälp av arrayens index. Indexet definierar positionen för varje element i matrisen. Det första elementet är vid 0, det andra elementet vid 1 och så vidare. Det är viktigt att notera att indexet för det första elementet är 0. Det är lätt att tänka att eftersom en matris har tio element som indexet är från 1 till 10 istället för från 0 till 9. Om vi ​​till exempel går tillbaka till lotteriet siffrexempel kan vi skapa en matris som innehåller 6 element och tilldela lottonummer till elementen:

int [] lotteryNumbers = new int [6];
lotterietal [0] = 16;
lotterietal [1] = 32;
lotterietal [2] = 12;
lotterietal [3] = 23;
lotterietal [4] = 33;
lotterietal [5] = 20;

Det finns en genväg för att fylla element i en matris genom att sätta värdena för elementen i deklarationen:

int [] lotteryNumbers = 16,32,12,23,33,20;
String [] names = "John", "James", "Julian", "Jack", "Jonathon";

Värdena för varje element placeras i ett par lockiga parenteser. Värdenas ordning bestämmer vilket element som tilldelas värdet som börjar med indexposition 0. Antalet element i matrisen bestäms av antalet värden inuti de lockiga parenteserna.

För att få värdet på ett element används dess index:

System.out.println ("Värdet på det första elementet är" + lotteryNumbers [0]); 

För att ta reda på hur många element en grupp har i längdfältet:

System.out.println ("The lotteryNumbers array has" + lotteryNumbers.length + "element"); 

Notera: Ett vanligt misstag när man använder längdmetoden är att glömma är att använda längdvärdet som indexposition. Detta kommer alltid att resultera i ett fel eftersom indexpositionerna för en matris är 0 till längd - 1.

Multidimensionella matriser

De matriser som vi hittills har tittat på är kända som en-dimensionella (eller en-dimensionella) matriser. Det betyder att de bara har en rad element. Arrayer kan dock ha mer än en dimension. En flerdimensionell är faktiskt en matris som innehåller matriser:

int [] [] lotteryNumbers = 16,32,12,23,33,20, 34,40,3,11,33,24; 

Indexet för en flerdimensionell matris består av två siffror:

System.out.println ("Värdet på element 1,4 är" + lotterynummer [1] [4]); 

Även om längden på matriserna i en flerdimensionell matris inte behöver vara samma längd:

String [] [] names = new String [5] [7]; 

Kopiera en array

För att kopiera en matris är det enklaste sättet att använda

arraycopy
metod för systemklassen. De
arraycopy
metoden kan användas för att kopiera alla element i en matris eller en del av dem. Det finns fem parametrar som skickas till
 arraycopy
metod - den ursprungliga matrisen, indexpositionen för att börja kopiera ett element från, den nya matrisen, indexpositionen att börja infoga från, antalet element som ska kopieras:
public static void arraycopy (Object src, int srcPos, Object dest, int destPos, int length) 

Till exempel för att skapa en ny matris som innehåller de fyra sista elementen i en

int 
array:
int [] lotteryNumbers = 16,32,12,23,33,20;
int [] newArrayNumbers = new int [4];
System.arraycopy (lotteritecken, 2, nyttArrayNumbers, 0, 4);

Eftersom matriser är en fast längd

arraycopy
metod kan vara ett användbart sätt att ändra storleken på en matris.

För att öka din kunskap om matriser kan du lära dig om att manipulera matriser med hjälp av Arrays-klassen och göra dynamiska matriser (d.v.s. matriser när antalet element inte är ett fast antal) med ArrayList-klassen.