Array i Java: lagra flera värden i en enda variabel


Nyckelord: array, endimensionell array, flerdimensionell array, arraylist

array java

Det här kapitlet kommer gå igenom array och arraylist i Java som är ett sätt att lagra och strukturera data. Kapitlet om array och arraylist kommer visa varför vi bör använda dem, hur man faktiskt går tillväga för att skapa och använda en array eller en arraylist, samt skillnader mellan en array och en arraylist. Förutom de två huvuddelarna så ska vi även titta närmare på hur vi kan använda en variant av for-loopen som kallas enhanced for-loop, samt vad en hashtable är för något.

Array i Java

En array i Java, även kallat fält, används för att lagra flera värden i en enda variabel istället för att deklarera separata variabler för varje värde. Med andra ord, en array är en samling av element som lagras i vad som kan ses som en lista. Varje element i en array består av samma datatyp och kan plockas ut och användas med hjälp av dess index. 

Vi kommer att se hur vi kan använda oss av så kallade endimensionella array, som kan liknas vid en rad av element, men även den så kallade flerdimensionell array som liknar en matris i utformningen. Längre fram i detta kapitel ska vi även titta närmare på arraylist, som namnet antyder, är nära besläktat med en array.

Sidor

Vad är en array i Java ?

Vi såg tidigare att vi kan tänka oss en variabel i Java som en låda som har ett namn, innehåller data av en viss datatyp, och som även kan ha ett värde.

Array Variabel Java
Figur 1: Variabel i Java

På liknande sätt kan vi nu tänka en array som en låda som inuti sig har flera lådor. Figur 2 nedan illustrerar hur man skulle kunna tänka sig att en array ser ut.

Array Java
Figur 2: Array Java

Vidare, vi kommer sedan se hur vi kan komma åt varje låda med hjälp av dess index, det vill säga vilket position elementet har i en array. På så sätt kan vi använda oss av värdet, läsa av det, och även redigera det. Viktigt att notera är att indexering alltid börjar på 0, det vill säga första värdet får index 0, andra värdet får index 1, och så vidare.

Varför använda en array i Java?

Som du säkerligen redan insett så blir en array väldigt användbar när vi utvecklar våra program då vi ofta kommer hantera stora samlingar av data. En array är användbar för att kunna strukturera och gruppera ihop dessa värden. Istället för att skapa enskilda variabler för varje värde vi vill spara ned, så kan vi istället spara ned alla de datapunkter vi vill arbeta med i en array.

An array object contains a number of variables. The number of variables may be zero, in which case the array is said to be empty. The variables contained in an array have no names; instead they are referenced by array access expressions that use non-negative integer index values. All the components of an array have the same type, called the component type of the array.

Oracle

Hur skapar man en array i Java?

Man skulle kunna säga att det generellt finns två tillvägagångssätt för att skapa en array i Java och vi kommer gå igenom syntax följt av ett kortare exempel för båda. Vi har valt att kalla dom för tillvägagångssätt 1 och tillvägagångssätt 2. Kom ihåg att alla värden i en array måste vara av samma datatyp. Exempelvis kan du inte spara en double i en array skapad för datatypen int.

Syntax: Deklarera en array i Java med tillvägagångssätt 1

datatyp [] namn = new datatyp [antal element];
  • Vi börjar med att ange vilken datatyp array ska bestå av, följt av en hakparentes [ ] och namn på array.
  • Sedan använder vi lika-med tecknet = och det reserverade ordet new.
  • Slutligen anger vi återigen samma datatyp som vi har valt att arbeta med följt av antalet element vi vill skapa inom hakparentes, och sedan avsluta med semikolon ; .

Exempel: Deklarera en array med tillvägagångssätt 1

Låt oss ta ett kort exempel för att visa hur det ser ut när man använder det vi kallar tillvägagångssätt 1 för att skapa en array. Om vi börjar med att skapa en array som inte innehåller några värden.

int[] arrEx = new int [4];

Eftersom vi inte initierade något startvärde för elementen i vår array så har de alla automatiskt tilldelats värdet 0.

Exempel Array Java
Figur 3: Exempel på en array i Java

Vidare, vill vi sedan spara ned värden i arrEx så når vi varje element med hjälp av dess index.

arrEx[0] = 22; 
arrEx[1] = 8;  
arrEx[2] = 97;  
arrEx[3] = 3;

Slutligen, det kommer resultera i

Exempel Array Java
Figur 4: Exempel på en array i Java

Syntax: Deklarera en array i Java med tillvägagångssätt 2

Vidare, istället för att skapa array med det reserverade ordet new och sedan spara ned värden i varje element så kan vi initiera värden till vår array direkt vid deklaration. Vi skapar en array genom att skriva:  

datatyp [] namn = { värde, värde, värde, värde, … } ;

Notera att i det här fallet så är det måsvingar, { } , som används till höger om lika-med tecknet.

Exempel: Deklarera en array med tillvägagångssätt 2

Vill vi skapa den array som vi använde i tillvägagångssätt 1, den vi döpte till arrEx, så skriver vi helt enkelt

int[] arrEx = {22, 8, 97, 3};

Vilket resulterar i samma array som tidigare,

Exempel Array Java
Figur 5: Exempel på en array i Java

Vi kan använda, läsa av och redigera varje element i array med hjälp av index på samma sätt som i tillvägagångssätt 1.

Standardvärde vid deklaration av array

Som vi såg i exemplet ovan för tillvägagångssätt 1, om vi inte deklarerar något värde när vi skapar en array så kommer Java tilldela elementet ett standardvärde. Det standardvärdet för de olika datatyperna är:

Datatyp                              Standardvärde
byte, short, int, long            0
float, double                        0.0
boolean                               false
ett objekt                             null

Val av tillvägagångssätt för att deklarera en array

Hur ska man resonera kring vilken av tillvägagångssätten som är bäst att välja? En bra tumregel (som kan verka självklar) är att:

  • Ifall en array inte har initierade värden eller många element som inte har initierade värden så är tillvägagångssätt 1 att föredra.
  • En array där varje element har ett startvärde så är tillvägagångssätt 2 smidigare och snabbare att använda sig av.

Känner du dig osäker på array och hur de är uppbyggda och deklareras så kan det vara enklare att använd dig av tillvägagångssätt 1. Den tar lite längre tid att deklarera och är mer utförlig, men kan samtidigt bidra till att underlätta förståelsen. Använd gärna papper och penna också ifall du känner dig osäker på hur den array du arbetar med ser ut.

Exempel: Array i Java

Låt oss ta ett exempel på hur man kan använda en array i Java. Vi kommer att förutom använda en array, även använda en metod som vi lärde oss i förra kapitlet. Det vi vill att programmet ska göra är att:

  • Skapa en array som innehåller fem namn som vi bara väljer slumpmässigt
  • Sedan ska programmet be användaren ange ett heltal mellan 0-4. Här antar vi att användaren skriver in rätt typ av data.
  • Slutligen, ta det heltal som användaren skrev in och skriva ut det namnet som fanns på det indexet i den array vi skapat.

Till vår hjälp kommer vi skapa en metod som tar en array och en int som argument, för att sedan skriva ut namnet som finns på index som användaren angett.

// Importerar klassen Scanner
import java.util.Scanner;

public class exempel {

    // Metod som tar en array med string och int som inparametrar
    public static void printName (String [] inArr, int userInput) {

        System.out.println("Namnet på index: " + userInput +
                " är: " + inArr[userInput]);

    }

    public static void main(String args[]) {  
        // Vår array med namn 
        String [] arrEx = {"Kalle", "Sara", "Ahmed", "Johanna", "Bengt"};

        // Skapar scanner objekt för att kunna spara ned info
        Scanner in = new Scanner(System.in);

        System.out.println("Ange heltal mellan 0-4 för " +
                "att skriva ut ett namn");

        // Sparar ned det heltal användaren anger
        int userInput = in.nextInt();

        // Anropar metoden
        printName(arrEx, userInput);
    }
}

Slutligen, det var ett första exempel på hur man kan använda en array i Java för att lagra och använda data. På kommande sidor så ska vi se flera olika exempel på hur vi kan arbeta med en array.

Sammanfattning av array i Java

En array i Java används för att lagra flera värden i en enda variabel istället för att deklarera separata variabler för varje värde. En array är en samling av element som lagas i vad som kan ses som en lista. Varje element i en array består av samma datatyp och kan plockas ut och användas med hjälp av dess index. Vidare, man kan skapa en array med två tillvägagångssätt.

datatyp [] namn = new datatyp [antal element];

och det andra tillvägagångssättet,

datatyp [] namn = { värde, värde, värde, värde, … } ;

Vanliga frågor och svar: Array i Java

Vad är standardvärdet, alltså när vi inte anger något värde, i en array för de olika datatyperna?

Datatyp                              Standardvärde
byte, short, int, long            0
float, double                        0.0
boolean                               false
ett objekt                             null

Kan du ändra storlek på en array i java efter att man har skapat den?

Nej, du kan inte ändra storleken på array efter skapandet. Det finns andra (som vi ska se längre fram) datastrukturer som kan ändra storlek efter skapandet.

Kan du ange ett negativt tal som index i en array?

Nej, du kan inte ange det negativa talet som arraystorlek. Om du anger ett negativt tal som index kommer du få kompileringsfel.

Vad tyckte du om sidan?

Lämna gärna feedback och hjälp oss göra sidan bättre

Feedback gör oss bättre!

Lämna gärna feedback om vad du tyckte om avsnittet!