CodeGym /Blog Java /Random-PL /Jak dodać nowy element do tablicy w Javie
Autor
Volodymyr Portianko
Java Engineer at Playtika

Jak dodać nowy element do tablicy w Javie

Opublikowano w grupie Random-PL
Och, tablice Java. Są obiektem intensywnej miłości i nienawiści setek początkujących programistów. Mówili, że dodawanie elementów do już zainicjowanej tablicy jest niemożliwe… Właściwie jest to możliwe, ale nie w klasycznym znaczeniu… i nie jest to zbyt wygodne. Dodawanie nowych elementów do tablicy, która została już zainicjowana, to swego rodzaju sztuczka. Jednak te sztuczki mogą się przydać na rozmowie kwalifikacyjnej… a czasami w pracy programisty. Aby upewnić się, że korzystanie z tego typu danych sprawia Ci przyjemność i że wiesz, jak robić to efektywnie, napisaliśmy przewodnik dotyczący dodawania nowego elementu do tablicy Java. Poza dokładnym zapoznaniem się z teorią i przykładami kodu, sprawdź i wykonaj praktyczne problemy opisane w poście. Jak dodać nowy element do tablicy w Javie — 1

Co to jest tablica w Javie

Przypomnijmy, czym jest tablica i jak ją stworzyć w Javie. Jeśli to pamiętasz, możesz przejść od razu do następnego podtytułu „5 sposobów dodawania nowych elementów do tablic Java”. Oficjalna dokumentacja Java firmy Oracle mówi, że tablice to serie wartości należących do tego samego typu danych. Zbiór liczb całkowitych jest doskonałym przykładem tablicy w Javie . Wszystkie definiowane wartości mają określoną pozycję w tablicy zwaną indeksem . Oto sposoby deklarowania i inicjowania tablic:

int[] myArray = new int[10];
int[] myArray1 = {1, 0, 3, 17, 5, 6, 7, 8, 9, 10}
W pierwszym przypadku zdefiniowaliśmy tablicę myArray i sprawiliśmy, że Java przydzielała miejsce na tablicę 10 elementów, w drugim myArray1 od razu wpisaliśmy do niej 10 wartości. W obu przypadkach element 11 nie może być po prostu wepchnięty do tablicy. Aby wykonać operacje na tablicach, programiści manipulują indeksami wartości, które zawiera tablica. Co powinniśmy zrobić? Przyjrzyjmy się najczęstszym sposobom dodawania do tablicy.

5 sposobów dodawania nowych elementów do tablic Java

Oto nasze sztuczki, dzięki którym to, co niezmienne, wydaje się zmienne.
  • Konwertuj tablicę na listę
  • Utwórz nową tablicę o większej pojemności i dodaj do niej nowy element
  • Implementacja System.arraycopy()
  • Kopiowanie tablic przy użyciu Apache Commons
  • Stosowanie metody ArrayCopyOf().
Przyjrzyjmy się bliżej tym sposobom dodawania elementu do tablicy.

1. Konwersja tablicy na listę

Ponieważ nie możemy bezpośrednio dodać nowego elementu do tablicy, następną najlepszą rzeczą do zrobienia jest przekonwertowanie ich na listy, dodanie nowych elementów i ponowne przekształcenie wartości z powrotem w tablice. Pierwszym sposobem konwersji tablicy na listę jest użycie funkcji asList() w celu utworzenia nowej tablicy ArrayList. Po pomyślnym przekształceniu zakresu wartości użyj funkcji ListAdd() , aby wstawić wartość. Gdy nie musisz już edytować tablicy, przekonwertuj ją z powrotem do pierwotnego typu danych za pomocą metody toArray() . Przy wszystkich metodach i konwersjach może to początkowo wydawać się mylące. Rzućmy okiem na przykład użycia asList() do wyjaśnienia sprawy.

// 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));
   }
}
Dane wyjściowe to:
Tablica początkowa: [0, 1, 2, 45, 7, 5, 17] Tablica z dodanymi 28: [0, 1, 2, 45, 7, 5, 17, 28]
Tak więc w programie pomyślnie utworzyliśmy tablicę myArray zawierającą 7 wartości, wypełniliśmy ją i wydrukowaliśmy. Wtedy uznaliśmy, że dziesięć wartości to dla nas za mało. Cóż, przekonwertowaliśmy myArray na ArrayList arrList przy użyciu metody Arrays.asList . Oto 28, element do dodania. Dodaliśmy go do ArrayList arrList , a następnie przekonwertowaliśmy z powrotem na tablicę za pomocą metody toArray() i wydrukowaliśmy nową tablicę.

2. Utwórz nową macierz o większej pojemności

Jednym z najczęstszych sposobów dodawania kolejnych elementów do tablicy jest tworzenie nowej, większej tablicy od podstaw, umieszczanie elementów starych i dodawanie nowych elementów. Oto przewodnik krok po kroku przez cały proces:
  • Utwórz nową tablicę o pojemności a+n (a — oryginalna pojemność tablicy, n — liczba elementów, które chcesz dodać).
  • Dodaj wszystkie elementy poprzedniego zakresu danych do nowego, a także nowe wartości.
  • Wydrukuj wynikową tablicę.
Spróbuj samodzielnie stworzyć taką tablicę i porównaj swój kod z tym z przykładu poniżej:

// 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));
   }
}
Dane wyjściowe to:
Tablica początkowa: [0, 1, 2, 45, 7, 5, 17] Tablica z dodanymi 28: [0, 1, 2, 45, 7, 5, 17, 28]
Cóż, ten sposób dodania nowego elementu do tablicy jest najłatwiejszy.

3. Stosowanie System.arrayCopy()

System.arrayCopy() to szeroko stosowana metoda przydzielania większej tablicy w miejscu docelowym tablicy źródłowej. Deweloper może określić sekwencję, którą chce skopiować do nowej tablicy w nawiasach metody. Aby zobaczyć, jak działa ta metoda i spróbować jej użyć, spójrz i spróbuj uruchomić poniższy przykład:

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));
   }
}
Dane wyjściowe to:
myArray przed dodaniem nowego elementu: [20, 21, 3, 4, 5, 88] myArray przed dodaniem nowego elementu: [20, 21, 3, 4, 5, 88, 12]
Tutaj stworzyliśmy tablicę myArray , wydrukowaliśmy ją i dodaliśmy nowy element za pomocą naszej metody addElement , która jest zbudowana na System.arrayCopy() .

4. Wykorzystanie Apache Commons do kopiowania tablic

Użyjmy niestandardowego sposobu. Mianowicie biblioteka innej firmy Apache Commons lang. Jest częścią projektu Apache Commons skupionego na wszystkich aspektach komponentów Javy wielokrotnego użytku. Wiedza o projekcie nie będzie zbędna. Język Apache Commons ma metodę add() zaprojektowaną specjalnie w celu umożliwienia rozszerzania tablic, co oszczędza programistom dużo czasu i wysiłku. Warto pamiętać, że ta metoda add() Apache Commons opiera się na wywołaniu metody System.arraycopy() na wypadek, gdybyś musiał odpowiedzieć na trudne pytanie egzaminacyjne lub podczas rozmowy kwalifikacyjnej. Aby dodać biblioteki do swojego projektu, przejdź do strony Apache Commons i pobierz biblioteki. Następnie przejdź do Plik → Struktura projektu → Biblioteki > + i wybierz pobrane pliki jar.

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));
   }
}
Dane wyjściowe to:
mojaTablica: [0, 1, 2, 3, 4] nowa Tablica z dodanym numerem: [0, 1, 2, 3, 4, 5]

5. Implementacja funkcji ArrayCopyOf()

ArrayCopyOf() to jeszcze jedna metoda dodawania nowego elementu do tablicy. Taki jak Apache Commons lang add() wewnętrznie wywołuje System.arraycopy() w celu wykonania tej operacji. Jednak większość programistów woli ArrayCopyOf() , ponieważ pozwala im zachować zwięzłość i czytelność kodu. Oto przykład użycia ArrayCopyOf() do dodania nowych elementów do tablicy:

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));
   }
}
Dane wyjściowe to:
myArray przed dodaniem nowego elementu: [20, 21, 3, 4, 5, 88] myArray przed dodaniem nowego elementu: [20, 21, 3, 4, 5, 88, 12]

Wniosek

Wiedza o tym, jak dodawać elementy do tablicy, pomaga programistom szybko aktualizować stary kod bez poświęcania jego funkcjonalności i czytelności… Lub po prostu zdać rozmowę kwalifikacyjną. Ponieważ istnieją różne sposoby dodawania elementów do tablic Java, możesz wybrać metodę, która Ci odpowiada.

Więcej czytania:

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION