CodeGym/Blog Java/Aleatoriu/Cum să adăugați un nou element la o matrice în Java
John Squirrels
Nivel
San Francisco

Cum să adăugați un nou element la o matrice în Java

Publicat în grup
Oh, matrice Java. Sunt obiectul iubirii intense și al urii a sute de dezvoltatori de software începători. Adăugarea de elemente la o matrice care a fost deja inițializată este imposibilă, au spus ei... De fapt, este posibil, dar nu într-un sens clasic... și nu este foarte convenabil. Adăugarea de noi elemente la o matrice care a fost deja inițializată este un fel de truc. Cu toate acestea, aceste trucuri pot fi utile într-un interviu... și uneori în meseria unui programator. Pentru a vă asigura că vă face plăcere să utilizați tipul de date și știți cum să o faceți eficient, am scris un ghid despre adăugarea unui nou element într-o matrice Java. În afară de a parcurge cu atenție exemplele de teorie și cod, asigurați-vă că verificați și finalizați problemele practice prezentate în postare. Cum să adăugați un nou element la o matrice în Java - 1

Ce este un Array în Java

Să ne amintim ce este un Array și cum să-l creăm în Java. Dacă vă amintiți asta, nu ezitați să treceți la următorul subtitlu „5 moduri de a adăuga elemente noi la matricele Java”. Documentația oficială Java a Oracle spune că tablourile sunt o serie de valori aparținând aceluiași tip de date. Un set de numere întregi este un exemplu perfect de matrice în Java . Toate valorile pe care le definiți au o poziție specifică în cadrul matricei numită index . Iată modalitățile de a declara și inițializa matrice:
int[] myArray = new int[10];
int[] myArray1 = {1, 0, 3, 17, 5, 6, 7, 8, 9, 10}
În primul caz, am definit o matrice myArray și am făcut ca Java să aloce spațiu pentru o matrice de 10 elemente, în al doilea myArray1 , am introdus imediat 10 valori în el. În oricare dintre cazuri, elementul 11 ​​nu poate fi pur și simplu împins în matrice. Pentru a efectua operații cu matrice, dezvoltatorii manipulează indicii valorilor pe care îi conține o matrice. Ce ar trebui sa facem? Să aruncăm o privire la cele mai comune modalități de a adăuga la matrice.

5 moduri de a adăuga elemente noi la matrice Java

Ei bine, aici trucurile noastre pentru a face imuabilul să pară mutabil.
  • Convertiți o matrice într-o listă
  • Creați o nouă matrice cu o capacitate mai mare și adăugați un nou element la matrice
  • Implementarea System.arraycopy()
  • Copierea matricelor folosind Apache Commons
  • Aplicarea metodei ArrayCopyOf().
Să aruncăm o privire mai atentă la aceste modalități de a adăuga un element la o matrice.

1. Convertirea unui tablou într-o listă

Deoarece nu putem adăuga un element nou într-o matrice în mod direct, următorul lucru cel mai bun de făcut este să le convertim în liste, să adăugăm elemente noi și să reconvertim valorile înapoi în matrice. Prima modalitate de a converti o matrice într-o listă este să utilizați asList() pentru a crea o nouă ArrayList. Odată ce intervalul de valori este transformat cu succes, utilizați ListAdd() pentru a insera valoarea. Odată ce nu mai trebuie să editați o matrice, convertiți înapoi la tipul de date original cu ajutorul metodei toArray() . Cu toate metodele și conversiile, acest lucru poate părea confuz la început. Să aruncăm o privire la exemplul de utilizare a asList() pentru a clarifica lucrurile.
// 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));
   }
}
Ieșirea este:
Matrice inițială: [0, 1, 2, 45, 7, 5, 17] Matrice cu 28 adăugat: [0, 1, 2, 45, 7, 5, 17, 28]
Deci, în program am creat cu succes o matrice myArray de 7 valori, am completat-o ​​și am tipărit-o. Apoi am decis că zece valori nu sunt suficiente pentru noi. Ei bine, am convertit myArray într-o ArrayList arrList folosind metoda Arrays.asList . Iată 28, elementul care trebuie adăugat. L-am adăugat la ArrayList arrList și apoi l-am convertit înapoi într-o matrice folosind metoda toArray() și am tipărit noua matrice.

2. Creați o nouă matrice cu o capacitate mai mare

Una dintre cele mai obișnuite modalități de a adăuga mai multe elemente la o matrice este prin crearea unei matrice noi, mai mari, de la zero, plasarea elementelor celor vechi și adăugarea de elemente noi. Iată o prezentare pas cu pas a procesului:
  • Creați o nouă matrice cu capacitatea a+n (a — capacitatea originală a matricei, n — numărul de elemente pe care doriți să le adăugați).
  • Adăugați toate elementele intervalului de date anterior la cel nou, precum și noile valori.
  • Imprimați matricea rezultată.
Încercați să creați singur o astfel de matrice și comparați codul cu cel din exemplul de mai jos:
// 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));
   }
}
Ieșirea este:
Matrice inițială: [0, 1, 2, 45, 7, 5, 17] Matrice cu 28 adăugat:[0, 1, 2, 45, 7, 5, 17, 28]
Ei bine, acest mod de a adăuga un nou element într-o matrice este cel mai simplu.

3. Aplicarea System.arrayCopy()

System.arrayCopy() este o metodă utilizată pe scară largă pentru alocarea unui tablou mai mare la destinația unui tablou sursă. Un dezvoltator poate specifica secvența pe care dorește să o copieze într-o nouă matrice între parantezele metodei. Pentru a vedea cum funcționează metoda și a încerca să o utilizați pentru dvs., aruncați o privire și încercați să rulați exemplul de mai jos:
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));
   }
}
Ieșirea este:
myArray înainte de a adăuga un nou element: [20, 21, 3, 4, 5, 88] myArray înainte de a adăuga un nou element: [20, 21, 3, 4, 5, 88, 12]
Aici am creat o matrice myArray , am imprimat-o și am adăugat un nou element folosind metoda addElement , care este construită pe System.arrayCopy() .

4. Folosind Apache Commons pentru a copia matrice

Să folosim un mod non-standard. Și anume, o bibliotecă terță parte Apache Commons lang. Este o parte a proiectului Apache Commons axat pe toate aspectele componentelor Java reutilizabile. Cunoștințele despre proiect nu vor fi de prisos. Apache Commons Lang are o metodă add() concepută special pentru a permite extinderea matricelor, economisind codificatori mult timp și efort. Merită să rețineți că această metodă Apache Commons add() se bazează pe apelarea metodei System.arraycopy() în cazul în care trebuie să răspundeți la un examen sau o întrebare dificilă de interviu. Pentru a adăuga bibliotecile în proiect, accesați site-ul web Apache Commons și descărcați bibliotecile. Apoi accesați Fișier → Structura proiectului → Biblioteci > + și selectați fișierele jar descărcate.
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));
   }
}
Ieșirea este:
myArray: [0, 1, 2, 3, 4] matrice nouă cu numărul adăugat: [0, 1, 2, 3, 4, 5]

5. Implementarea ArrayCopyOf()

ArrayCopyOf() este încă o metodă de a adăuga un nou element la o matrice. Cum ar fi Apache Commons lang add() apelează intern System.arraycopy() pentru a face această operație. Cu toate acestea, majoritatea dezvoltatorilor preferă ArrayCopyOf() , deoarece le permite să păstreze codul concis și ușor de citit. Iată un exemplu de utilizare a ArrayCopyOf() pentru a adăuga elemente noi la o matrice:
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));
   }
}
Ieșirea este:
myArray înainte de a adăuga un nou element: [20, 21, 3, 4, 5, 88] myArray înainte de a adăuga un nou element: [20, 21, 3, 4, 5, 88, 12]

Concluzie

Știind cum să adăugați elemente într-o matrice îi ajută pe dezvoltatori să actualizeze rapid vechiul cod, fără a-i sacrifica funcționalitatea și lizibilitatea... Sau doar pentru a trece interviul. Deoarece există diferite moduri de a adăuga elemente la matrice Java, nu ezitați să alegeți metoda cu care vă simțiți confortabil.

Mai multe lecturi:

Comentarii
  • Popular
  • Nou
  • Vechi
Trebuie să fii conectat pentru a lăsa un comentariu
Această pagină nu are încă niciun comentariu