CodeGym /Java-blogg /Tilfeldig /Hvordan legge til et nytt element til en matrise i Java
John Squirrels
Nivå
San Francisco

Hvordan legge til et nytt element til en matrise i Java

Publisert i gruppen
Åh, Java-arrayer. De er gjenstand for intens kjærlighet og hat fra hundrevis av nybegynnere programvareutviklere. Å legge til elementer i en matrise som allerede var initialisert er umulig, sa de... Faktisk er det mulig, men ikke i en klassisk betydning... og det er ikke særlig praktisk. Å legge til nye elementer i en matrise som allerede var initialisert er et slags triks. Imidlertid kan disse triksene komme godt med i et intervju ... og noen ganger i en programmerers jobb. For å være sikker på at du liker å bruke datatypen og vet hvordan du gjør det effektivt, skrev vi en veiledning om å legge til et nytt element i en Java-array. Bortsett fra å gå nøye gjennom teori- og kodeeksemplene, sørg for å sjekke ut og fullføre praksisproblemene som er omtalt i innlegget. Hvordan legge til et nytt element til en matrise i Java - 1

Hva er en Array i Java

La oss huske hva en Array er og hvordan du lager den i Java. Hvis du husker det, kan du gjerne hoppe videre til neste underoverskrift "5 måter å legge til nye elementer i Java-arrayer". Oracles offisielle Java-dokumentasjon sier at arrays er en serie verdier som tilhører samme datatype. Et sett med heltall er et perfekt eksempel på en matrise i Java . Alle verdier du definerer har en spesifikk posisjon i matrisen kalt en indeks . Her er måtene å deklarere og initialisere matriser på:

int[] myArray = new int[10];
int[] myArray1 = {1, 0, 3, 17, 5, 6, 7, 8, 9, 10}
I det første tilfellet definerte vi en array myArray og fikk Java til å tildele plass til en array med 10 elementer, i det andre myArray1 la vi umiddelbart inn 10 verdier i den. I begge tilfeller kan ikke element 11 bare skyves inn i gruppen. For å utføre operasjoner med matriser, manipulerer utviklere indeksene til verdier en matrise inneholder. Hva skal vi gjøre? La oss ta en titt på de vanligste måtene å legge til i array.

5 måter å legge til nye elementer i Java-arrayer

Vel, her er våre triks for å få det uforanderlige til å virke foranderlig.
  • Konverter en matrise til en liste
  • Opprett en ny matrise med større kapasitet og legg til et nytt element til matrisen
  • Implementering av System.arraycopy()
  • Kopiering av arrays ved hjelp av Apache Commons
  • Bruk av ArrayCopyOf()- metoden
La oss se nærmere på disse måtene å legge til et element i en matrise.

1. Konvertere en matrise til en liste

Siden vi ikke kan legge til et nytt element i en matrise direkte, er det nest beste å gjøre å konvertere dem til lister, legge til nye elementer og konvertere verdiene tilbake til matriser. Den første måten å konvertere en matrise til en liste er å bruke asList() for å lage en ny ArrayList. Når verdiområdet er transformert, bruker du ListAdd() for å sette inn verdien. Når du ikke lenger trenger å redigere en matrise, konverterer du tilbake til den opprinnelige datatypen ved hjelp av toArray()- metoden. Med alle metodene og konverteringene kan dette virke forvirrende i begynnelsen. La oss ta en titt på eksemplet med bruk av asList() for å rydde opp.

// Code for adding Java arrays to a program
import java.lang.*;
import java.util.*;
 
class ArrayDemo{
   //Let’s add a new element to an array
   public static Integer[] addX(Integer myArray[], int x) {
       int i;
       //turn array into ArrayList using asList() method
       List arrList = new ArrayList( Arrays.asList(myArray));
 
       // adding a new element to the array
       arrList.add(x);
 
       // Transforming the ArrayList into an array
       myArray = arrList.toArray(myArray);
       return myArray;
   }
   public static void main(String[] args) {
       int i;
       //initial array
       Integer myArray[] = { 0, 1, 2, 45, 7, 5, 17};
 
       //print the initial array out
       System.out.println("Initial Array: "
                          + Arrays.toString(myArray));
 
       //element to be added
       int x = 28;
 
       // call the method to add x in myArray
       myArray = addX(myArray, x);
 
       // print the updated array out
       System.out.println("Array with " + x + " added: "
                          + Arrays.toString(myArray));
   }
}
Utgangen er:
Innledende matrise: [0, 1, 2, 45, 7, 5, 17] Matrise med 28 lagt til: [0, 1, 2, 45, 7, 5, 17, 28]
Så i programmet har vi opprettet en array myArray med 7 verdier, fylt den ut og skrevet den ut. Da bestemte vi oss for at ti verdier ikke var nok for oss. Vel, vi konverterte myArray til en ArrayList arrList ved å bruke Arrays.asList- metoden. Her er 28, elementet som skal legges til. Vi la den til ArrayList arrList , og konverterte den deretter tilbake til en matrise ved å bruke toArray()- metoden og skrev ut den nye matrisen.

2. Opprett en ny matrise med større kapasitet

En av de vanligste måtene å legge til flere elementer i en matrise er ved å lage en ny, større matrise fra bunnen av, sette inn elementene til de gamle og legge til nye elementer. Her er en steg-for-steg gjennomgang av prosessen:
  • Opprett en ny matrise med kapasiteten a+n (a — den opprinnelige matrisekapasiteten, n — antallet elementer du vil legge til).
  • Legg til alle elementene i det forrige dataområdet til det nye, så vel som de nye verdiene.
  • Skriv ut den resulterende matrisen.
Prøv å lage en slik matrise på egen hånd og sammenlign koden din med den i eksemplet nedenfor:

// Java Program to add an element in an Array

import java.lang.*;
import java.util.*;

class ArrayDemo {
   //Method to add an element x into array myArray
   public static int[] addX(int myArray[], int x) {
       int i;

       // create a new array of a bigger size (+ one element)
       int newArray[] = new int[myArray.length + 1];

       // insert the elements from the old array into the new one
       for (i = 0; i < myArray.length; i++)
           newArray[i] = myArray[i];

       newArray[myArray.length] = x;
       return newArray;
   }

   public static void main(String[] args) {
       int i;

       // initial array of size 10
       int arr[]
               = {0, 1, 2, 45, 7, 5, 17};

       // print the initial array
       System.out.println("Initial Array: " + Arrays.toString(arr));

       // element to be added
       int x = 28;

       // call the addX method to add x in arr
       arr = addX(arr, x);
       // print the updated array
       System.out.println("Array with " + x + " added:" + Arrays.toString(arr));
   }
}
Utgangen er:
Innledende matrise: [0, 1, 2, 45, 7, 5, 17] Matrise med 28 lagt til:[0, 1, 2, 45, 7, 5, 17, 28]
Vel, denne måten å legge til et nytt element i en matrise er den enkleste.

3. Bruk av System.arrayCopy()

System.arrayCopy() er en mye brukt metode for å allokere en større matrise ved destinasjonen til en kildematrise. En utvikler kan spesifisere sekvensen han vil kopiere til en ny matrise i parentesene til metoden. For å se hvordan metoden fungerer og prøve å bruke den selv, ta en titt på og prøv å kjøre eksemplet nedenfor:

import java.util.Arrays;

class ArrayDemo {
   private static Integer[] addElement(Integer[] myArray, int newElement) {
       //we create a new Object here, an array of bigger capacity 
       Integer[] array = new Integer[myArray.length + 1];
       System.arraycopy(myArray, 0, array, 0, myArray.length);
       array[myArray.length] = newElement;
       return array;
   }

   public static void main(String[] args) {
       Integer[] myArray = {20, 21, 3, 4, 5, 88};
       System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
       myArray = addElement(myArray, 12);
       System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
   }
}
Utgangen er:
myArray før du legger til et nytt element: [20, 21, 3, 4, 5, 88] myArray før du legger til et nytt element: [20, 21, 3, 4, 5, 88, 12]
Her har vi laget en array myArray , skrevet den ut og lagt til et nytt element ved hjelp av vår addElement- metode, som er bygget på System.arrayCopy() .

4. Bruke Apache Commons til å kopiere arrays

La oss bruke en ikke-standard måte. Nemlig et tredjeparts bibliotek Apache Commons lang. Det er en del av Apache Commons-prosjektet fokusert på alle aspekter av gjenbrukbare Java-komponenter. Kunnskap om prosjektet vil ikke være overflødig. Apache Commons lang har en metode add() designet spesielt for å tillate utvidelse av arrays, det sparer koderne for mye tid og krefter. Det er verdt å huske på at denne Apache Commons add() -metoden er basert på å kalle System.arraycopy()- metoden i tilfelle du må svare på en vanskelig eksamen eller intervjuspørsmål. For å legge til bibliotekene i prosjektet ditt, gå til Apache Commons- nettstedet og last ned bibliotekene. Gå deretter til Fil → Prosjektstruktur → Biblioteker > + og velg de nedlastede jar-filene.

import org.apache.commons.lang3.ArrayUtils;
import java.util.Arrays;

class ArrayDemo {
   private static <T> T[] append(T[] arr, T element) {
       return ArrayUtils.add(arr, element);
   }

   public static void main(String[] args) {
       Integer[] myArray = { 0, 1, 2, 3, 4};
       System.out.println("myArray: " + Arrays.toString(myArray));

       myArray = append(myArray, 5);
       System.out.println("new Array with the number added: " + Arrays.toString(myArray));
   }
}
Utgangen er:
myArray: [0, 1, 2, 3, 4] ny matrise med nummeret lagt til: [0, 1, 2, 3, 4, 5]

5. Implementering av ArrayCopyOf()

ArrayCopyOf() er en metode til for å legge til et nytt element i en matrise. Slik som Apache Commons lang add() kaller den internt System.arraycopy() for å utføre denne operasjonen. Imidlertid foretrekker de fleste utviklere ArrayCopyOf() siden det lar dem holde koden kortfattet og lesbar. Her er et eksempel på bruk av ArrayCopyOf() for å legge til nye elementer i en matrise:

import java.util.Arrays;
class ArrayDemo {
   private static <X> X[] addElement(X[] myArray, X element) {
       X[] array = Arrays.copyOf(myArray, myArray.length + 1);
       array[myArray.length] = element;
       return array;
   }
   public static void main(String[] args) {
       Integer[] myArray = {20, 21, 3, 4, 5, 88};
       System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
       myArray = addElement(myArray, 12);
       System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
   }
}
Utgangen er:
myArray før du legger til et nytt element: [20, 21, 3, 4, 5, 88] myArray før du legger til et nytt element: [20, 21, 3, 4, 5, 88, 12]

Konklusjon

Å vite hvordan man legger til elementer i en matrise hjelper utviklere med å oppdatere den gamle koden raskt uten å ofre funksjonaliteten og lesbarheten... Eller bare for å bestå intervjuet. Siden det er forskjellige måter å legge til elementer i Java-matriser på, velg gjerne metoden du er komfortabel med.
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION