CodeGym/Java блог/Случаен/Как да добавите нов елемент към масив в Java
John Squirrels
Ниво
San Francisco

Как да добавите нов елемент към масив в Java

Публикувано в групата
О, Java масиви. Те са обект на силна любов и омраза на стотици начинаещи разработчици на софтуер. Добавянето на елементи към масив, който вече е инициализиран, е невъзможно, казаха... Всъщност е възможно, но не в класически смисъл... и не е много удобно. Добавянето на нови елементи към масив, който вече е инициализиран, е вид трик. Въпреки това, тези трикове могат да бъдат полезни на интервю ... а понякога и в работата на програмист. За да сме сигурни, че ви харесва да използвате типа данни и знаете How да го правите ефективно, написахме ръководство за добавяне на нов елемент към масив на Java. Освен внимателното разглеждане на теорията и образците на code, не забравяйте да проверите и да изпълните практическите проблеми, включени в публикацията. Как да добавите нов елемент към масив в Java - 1

Какво е масив в Java

Нека си припомним Howво е масив и How да го създадем в Java. Ако си спомняте това, не се колеbyteе да прескочите напред към следващото подзаглавие „5 начина за добавяне на нови елементи към Java масиви“. Официалната documentация на Oracle за Java казва, че масивите са поредица от стойности, принадлежащи към един и същи тип данни. Набор от цели числа е перфектен пример за масив в Java . Всички стойности, които дефинирате, имат специфична позиция в масива, наречена индекс . Ето начините за деклариране и инициализиране на масиви:
int[] myArray = new int[10];
int[] myArray1 = {1, 0, 3, 17, 5, 6, 7, 8, 9, 10}
В първия случай дефинирахме масив myArray и накарахме Java да задели място за масив от 10 елемента, във втория myArray1 веднага въведохме 10 стойности в него. И в двата случая елемент 11 не може просто да бъде вкаран в масива. За да извършват операции с масиви, разработчиците манипулират индексите на стойностите, които масивът съдържа. Какво да правим? Нека да разгледаме най-често срещаните начини за добавяне към масив.

5 начина за добавяне на нови елементи към Java масиви

Е, ето нашите трикове, за да направим неизменното да изглежда променливо.
  • Преобразуване на масив в списък
  • Създайте нов масив с по-голям капацитет и добавете нов елемент към масива
  • Внедряване на System.arraycopy()
  • Копиране на масиви с помощта на Apache Commons
  • Прилагане на метода ArrayCopyOf().
Нека разгледаме по-подробно тези начини за добавяне на елемент към масив.

1. Преобразуване на масив в списък

Тъй като не можем да добавим нов елемент към масив директно, следващото най-добро нещо, което трябва да направите, е да ги конвертирате в списъци, да добавите нови елементи и да преобразувате стойностите обратно в масиви. Първият начин за преобразуване на масив в списък е да използвате asList() за създаване на нов ArrayList. След като диапазонът от стойности бъде успешно трансформиран, използвайте ListAdd() , за да вмъкнете стойността. След като вече не е необходимо да редактирате масив, преобразувайте обратно към оригиналния тип данни с помощта на метода toArray() . С всички методи и преобразувания, това може да изглежда объркващо в началото. Нека да разгледаме примера за използване на asList(), за да изясним нещата.
// 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));
   }
}
Резултатът е:
Първоначален масив: [0, 1, 2, 45, 7, 5, 17] Масив с добавени 28: [0, 1, 2, 45, 7, 5, 17, 28]
И така, в програмата успешно създадохме масив myArray от 7 стойности, попълнихме го и го отпечатахме. Тогава решихме, че десет ценности не са ни достатъчни. Е, ние преобразувахме myArray в ArrayList arrList с помощта на метода Arrays.asList . Ето 28, елементът, който трябва да се добави. Добавихме го към ArrayList arrList и след това го преобразувахме обратно в масив с помощта на метода toArray() и отпечатахме новия масив.

2. Създайте нов масив с по-голям капацитет

Един от най-често срещаните начини за добавяне на повече елементи към масив е чрез създаване на нов, по-голям масив от нулата, поставяне на елементите на старите и добавяне на нови елементи. Ето стъпка по стъпка описание на процеса:
  • Създайте нов масив с капацитет a+n (a — оригиналния капацитет на масива, n — броя елементи, които искате да добавите).
  • Добавете всички елементи от предишния диапазон от данни към новия, Howто и новите стойности.
  • Отпечатайте получения масив.
Опитайте сами да създадете такъв масив и сравнете своя code с този в примера по-долу:
// 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));
   }
}
Резултатът е:
Първоначален масив: [0, 1, 2, 45, 7, 5, 17] Масив с добавени 28: [0, 1, 2, 45, 7, 5, 17, 28]
Е, този начин за добавяне на нов елемент в масив е най-лесният.

3. Прилагане на System.arrayCopy()

System.arrayCopy() е широко използван метод за разпределяне на по-голям масив в дестинацията на изходен масив. Разработчикът може да посочи последователността, която иска да копира в нов масив в скобите на метода. За да видите How работи методът и да опитате да го използвате сами, разгледайте и опитайте да стартирате примера по-долу:
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));
   }
}
Резултатът е:
myArray преди добавяне на нов елемент: [20, 21, 3, 4, 5, 88] myArray преди добавяне на нов елемент: [20, 21, 3, 4, 5, 88, 12]
Тук създадохме масив myArray , отпечатахме го и добавихме нов елемент, използвайки нашия метод addElement , който е изграден върху System.arrayCopy() .

4. Използване на Apache Commons за копиране на масиви

Нека използваме неstandardн начин. А именно библиотека на трета страна Apache Commons lang. Това е част от проекта Apache Commons, фокусиран върху всички аспекти на компонентите на Java за многократна употреба. Познанията за проекта няма да са излишни. Apache Commons lang има метод add() , предназначен специално да позволява разширяване на масиви, спестява на програмистите много време и усorя. Струва си да имате предвид, че този метод на Apache Commons add() се основава на извикване на метод System.arraycopy() в случай, че трябва да отговорите на труден въпрос за изпит or интервю. За да добавите библиотеките към вашия проект, отидете на уебсайта на Apache Commons и изтеглете библиотеките. След това отидете на Файл → Структура на проекта → Библиотеки > + и изберете изтеглените 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));
   }
}
Резултатът е:
myArray: [0, 1, 2, 3, 4] нов масив с добавено число: [0, 1, 2, 3, 4, 5]

5. Внедряване на ArrayCopyOf()

ArrayCopyOf() е още един метод за добавяне на нов елемент към масив. Като Apache Commons lang add() той вътрешно извиква System.arraycopy() за извършване на тази операция. Повечето разработчици обаче предпочитат ArrayCopyOf() , тъй като им позволява да поддържат codeа кратък и четим. Ето пример за използване на ArrayCopyOf() за добавяне на нови елементи към масив:
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));
   }
}
Резултатът е:
myArray преди добавяне на нов елемент: [20, 21, 3, 4, 5, 88] myArray преди добавяне на нов елемент: [20, 21, 3, 4, 5, 88, 12]

Заключение

Знанието How да добавят елементи към масив помага на разработчиците да актуализират бързо стария code, без да жертват неговата функционалност и четливост... Или просто да преминат интервюто. Тъй като има различни начини за добавяне на елементи към Java масиви, не се колеbyteе да изберете метода, който ви харесва.

Още четене:

Коментари
  • Популярен
  • Нов
  • Стар
Трябва да сте влезли, за да оставите коментар
Тази страница все още няма коментари