Array i Java: Användningsområden och inbyggda metoder


Nyckelord: array, enhanced for-loop, java.util.Arrays

lagra data i en array

Det finns flera egenskaper hos en array i Java som gör att de blir väldigt lätta att arbeta med.

Hur använder man en array i Java?

Som vi såg när vi introducerade vad en array är så kan vi använda, läsa av och redigera varje element i array med hjälp av index. Vi skriver helt enkelt arrayens namn följt av index inom hakparentes. Vi tar ett kortare illustrativt exempel:

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

Längden av en array

Om vi vill veta hur lång en array så skriver vi enkelt namnet på den array vi arbetar med, följt av .length. Funktionen .length anger antalet element som tilldelats, och inte det infogade värdet. Om vi har samma array som tidigare och vill veta hur många element den innehåller, då skriver vi enkelt:

int lenArr = arrEx.length; 
Length array java
Figur 1: Length array java
System.out.println("Längden av arrEx är: " + lenArr) 

Om vi skriver ut det i konsollen får vi:

4

Exempel på att använda en array i Java

Vi ska nu gå igenom ett par exempel på hur vi kan arbeta med en arrayer. Exempelvis är några klassiska problem att söka igenom en array eller att summera alla värden i en array.

Exempel 1: Summera värden i en array i Java

Som vi såg när gick igenom enhanced for-loop så kan vi enkelt summera elementen i en array. Vi behöver skapa en variabel för att kunna spara ned alla värden och sedan löpa igenom array:n och summera dem.

int total = 0; 
int[] arrEx = {2 , 3, 8, 14}; 

for (int element : arrEx){
   total = total + element; 
}

// Skriva ut total 
System.out.println("Summan av talen i arrEx = " + total);

Vilket resulterar i

Summan av talen i arrEx = 27

Exempel 2: Söka i en array i Java

Säg att vi vill söka igenom en array, till exempel så letar vi efter positionen för ett visst element för att sedan kunna byta ut det. I det här fallet så kommer vi använda oss av en while-loopdär vi ställer upp villkoret att positionen ska vara innanför vår array (en självklarhet) samt att värdet inte ska vara funnet, när någon av de villkoren inte uppfylls så avbryts while-loopen.

För att se ifall elementet på den positionen i array överensstämmer med det eftersökta värdet så kommer vi använda en if-sats som ifall värdet hittas ändrar boolean variabeln, som vi döper till found, till sant och loopen kommer sluta. Skulle värdet inte överensstämma så kommer positionsvariablen att öka med ett för att kolla nästa position vår array.

int [] field = {5, 6, 33, 54, 77, 87, 32, 78, 98};

// Det eftersökta värdet 
int searched = 78;

// För att kunna spara ned positionen (index)
int pos = 0;         

boolean found = false; 

while (pos < field.length && !found) {
   if (field[pos] == searched){
       // Vi har hittat värdet 
       found = true;   
   }
   else{ 
       // Öka positionsvariabeln 
       pos++;   
   }
}

// Om vi sedan vill skriva ut positionen 
if (found == true){ 
  System.out.println("Värdet hittades på index: " + pos); 
}

// Eller om vi inte hittade värdet 
else{
  System.out.println("Värdet kunde ej hittas i den genomsökta array");
}
Värdet hittades på index: 7

Exempel 3: Hitta största värdet på ett element i en array

int[] arrEx = {22 , 31, 8, 14, 57, 3, 81, 79, 4, 80}; 
int largest = 0; 

for (int i = 0; i < arrEx.length; i++){
    if (arrEx[i] > largest){
        largest = arrEx[i]; 
    }
}

System.out.println("Största värdet i arrEx är: " + largest);

Exempel 4: Hitta minsta värdet på ett element i en array

int[] arrEx = {22 , 31, 8, 14, 57, 3, 81, 79, 4, 80}; 
int smallest = arrEx[0]; 

for (int i = 0; i < arrEx.length; i++){
    if (arrEx[i] < smallest){
        smallest = arrEx[i]; 
    }
}

System.out.println("Minsta värdet i arrEx är: " + smallest);

Exempel 5: Skapa metoder för att jämföra värden i en array

Låt oss nu ta ett exempel där vi använder metoder för att på liknande sätt som ovan ta ut största, respektive minsta, värdet från en array. Det vi sedan ska göra är att jämföra om det största och minsta värdet tillsammans är större eller mindre än summan av alla de övriga värden.

Vidare, till vår hjälp ska vi skapa två stycken metoder, smallIndex och largIndex, som ska ta en array som inparameter och returnera index för minsta, respektive största, värdet i den arrayen. Vi kommer alltså att jobba med index för elementen och det gör vi för att demonstrera hur det funkar med index i en array.

Först så skapar vi en metod som returnerar index för det minsta värdet i en array

public static int smallIndex (int [] a){

    int smallIndex = 0;
    int smallVal = a[0];

    for(int i = 0; i < a.length; i++){
        if( smallVal > a[i]){
            smallVal = a[i];
            smallIndex = i;
        }
    }
    return smallIndex;
}

Sedan skapar vi en metod som returnerar index för det största värdet i en array

public static int largIndex (int [] a){

    int largIndex = 0;
    int largVal = 0;

    for(int i = 0; i < a.length; i++){
        if( a[i] > largVal){
            largVal = a[i];
            largIndex = i;
        }
    }
    return largIndex;
}

Slutligen så använder vi dom och skapar en for-loop som summera värdena i vår array, utan de värdena på de index som innehåller största och minsta värdet.

public static void main(String args[]) {
    int[] arrEx = {22 , 31, 8, 14, 57, 3, 81, 79, 4, 80};
    int small = smallIndex(arrEx);
    int large = largIndex(arrEx);
    int sum = 0;

    for (int i = 0; i < arrEx.length; i++){
        if (i != small && i != large){
            sum = sum + arrEx[i];
        }
    }

    if (sum > (arrEx[small] + arrEx[large])){
        System.out.println("Totalen utan det minsta och största värdet är: " + sum +
        " vilket är STÖRRE än minsta och stösta värdet tillsammans, som är: " + (arrEx[small] + arrEx[large]));
        }

    else{
        System.out.println("Totalen utan minsta och största värdet är: " + sum +
        " vilket är MINDRE än minsta och stösta värdet tillsammans, som är: " + (arrEx[small] + arrEx[large]));
    }
}

Klassen java.util.Arrays: Inbyggda metoder för att arbeta med en array

Klassen java.util.Arrays innehåller en rad olika metoder för att modifiera och arbeta med en array, så som som att sortera eller att söka i en array. Men innan vi kan använda oss av metoderna nedan behöver vi importera klassen vilket vi enkelt gör genom att ange import java.util.Arrays;

Metoderna i klassen java.util.Arrays är bra att känna till, eller snarare, det är bra att känna till att dom finns. Med det sagt, vi rekommenderar inte att du sitter och pluggar på metoderna, snarare uppmärksamma att det finns inbyggda metoder i Java som du kan använda när du arbetar med en array.

Vidare, men låt oss titta på några av de vanligaste metoderna som finns i java.util.Arrays så du får en uppfattning vad dom kan göra. Notera att alla metoderna nedan kan användas för alla primitiva datatyper.

  • Arrays.binarySearch(datatyp [] a, datatyp key)
    Söker efter ett specifikt värde i en array. Returnerar elementets index om det finns, eller -1 om det inte hittas.
  • Arrays.equals(datatyp [] a, datatyp[] b)
    Returnerar true om de två angivna arrrayerna är lika med varandra. Två arrayer anses vara lika med varandara båda innehåller samma antal element och alla motsvarande par av element i de två arreyerna är lika.
  • Arrays.fill(datatyp[] a, datatyp val)
    Tilldelar det angivna värdet, val, till varje element i den angivna matrisen. Notera att datypen för array och variabeln måste självklart överenstämma eftersom vi bara kan lagra datatyper av samma sort i en array.
  • Arrays.sort(datatyp[] a)
    Sorterar den angivna arrayen i en stigande ordning, i enlighet med dess naturliga ordning.
  • Arrays.toString(datatyp [] a)
    Returnerar innehållet i den angivna matrisen som en textsträng, alltså en String.

Vill du läsa mer om klassen java.util.Arrays och se en utförligare lista och exempel på hur den används kan du göra det på Oracles sida genom att klicka här.

Vanliga fel när man använder en array i Java

Möjligtvis det vanligaste misstaget när man använder en array är försöka komma åt ett element som inte existerar. Om vi tar ett enkelt exempel så kommer det vara enklare att sedan när vi går in på vanliga algoritmer för array att förstå varför det är ett av de vanligare (och enklare) misstaget att råka göra.

Vi skapar ett fält och tänker sedan spara ned ett värde i fältet.

int [] field = new int [10]; 
int[10] = 5;

Detta ger en error för field har 10 element, med index räckvidd från 0 till 9.

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!