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.
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().
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ę.
// 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: |
---|
GO TO FULL VERSION