Å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.

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
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.
// 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.
Mer lesing: |
---|
GO TO FULL VERSION