CodeGym/Java Blog/무작위의/Java에서 배열에 새 요소를 추가하는 방법
John Squirrels
레벨 41
San Francisco

Java에서 배열에 새 요소를 추가하는 방법

무작위의 그룹에 게시되었습니다
회원
오, 자바 배열. 그들은 수백 명의 초보 소프트웨어 개발자들의 열렬한 사랑과 증오의 대상입니다. 이미 초기화된 배열에 요소를 추가하는 것은 불가능하다고... 사실 가능하지만 고전적인 의미는 아니고... 별로 편리하지도 않습니다. 이미 초기화된 배열에 새 요소를 추가하는 것은 일종의 트릭입니다. 그러나 이러한 트릭은 인터뷰에서 유용할 수 있으며 때로는 프로그래머의 작업에서도 유용할 수 있습니다. 데이터 유형을 즐겁게 사용하고 효율적으로 수행하는 방법을 알고 있는지 확인하기 위해 Java 배열에 새 요소를 추가하는 방법에 대한 가이드를 작성했습니다. 이론과 코드 샘플을 주의 깊게 검토하는 것 외에 게시물에 포함된 연습 문제를 확인하고 완료하십시오. Java에서 배열에 새 요소를 추가하는 방법 - 1

자바에서 배열이란?

배열이 무엇이며 Java에서 배열을 생성하는 방법을 기억해 봅시다. 이 점을 기억한다면 다음 부제인 "Java 배열에 새 요소를 추가하는 5가지 방법"으로 건너뛰십시오. 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을 단순히 배열에 푸시할 수 없습니다. 배열 작업을 수행하기 위해 개발자는 배열에 포함된 값의 인덱스를 조작합니다. 어떻게 해야 합니까? 배열에 추가하는 가장 일반적인 방법을 살펴보겠습니다.

Java 배열에 새 요소를 추가하는 5가지 방법

불변을 변할 수 있게 만드는 트릭입니다.
  • 배열을 목록으로 변환
  • 더 큰 용량의 새 어레이를 만들고 어레이에 새 요소를 추가합니다.
  • 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]
따라서 프로그램에서 우리는 7개의 값으로 구성된 myArray 배열을 성공적으로 생성 하고 채우고 출력했습니다. 그런 다음 10가지 값으로는 충분하지 않다고 결정했습니다. 글쎄, 우리는 Arrays.asList 메서드 를 사용하여 myArray를 ArrayList arrList로 변환했습니다 . 여기에 추가할 요소인 28이 있습니다. ArrayList arrList 에 추가한 다음 toArray() 메서드를 사용하여 다시 배열로 변환 하고 새 배열을 인쇄했습니다.

2. 용량이 더 큰 새 어레이 생성

배열에 더 많은 요소를 추가하는 가장 일반적인 방법 중 하나는 처음부터 새롭고 더 큰 배열을 만들고 이전 요소를 넣고 새 요소를 추가하는 것입니다. 프로세스의 단계별 연습은 다음과 같습니다.
  • 용량이 a+n인 새 배열을 만듭니다(a — 원래 배열 용량, n — 추가하려는 요소 수).
  • 새 값뿐만 아니라 이전 데이터 범위의 모든 요소를 ​​새 데이터 범위에 추가합니다.
  • 결과 배열을 인쇄합니다.
이러한 배열을 직접 만들어보고 코드를 아래 예제의 코드와 비교하십시오.
// 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()는 소스 배열의 대상에 더 큰 배열을 할당하는 데 널리 사용되는 방법입니다. 개발자는 메서드의 괄호 안에 새 배열에 복사하려는 시퀀스를 지정할 수 있습니다. 방법이 어떻게 작동하는지 확인하고 직접 사용해 보려면 아래 예제를 살펴보고 실행해 보십시오.
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 배열을 만들고 출력하고 System.arrayCopy() 에 구축된 addElement 메서드를 사용하여 새 요소를 추가했습니다 .

4. Apache Commons를 사용하여 어레이 복사

비표준 방식을 사용합시다. 즉, 타사 라이브러리 Apache Commons lang입니다. 재사용 가능한 Java 구성 요소의 모든 측면에 초점을 맞춘 Apache Commons 프로젝트의 일부입니다. 프로젝트에 대한 지식은 불필요하지 않습니다. Apache Commons lang에는 배열 확장을 허용하도록 특별히 설계된 add() 메서드가 있어 코더의 시간과 노력을 많이 절약할 수 있습니다. 이 Apache Commons add() 메서드 는 까다로운 시험이나 인터뷰 질문에 답해야 하는 경우 System.arraycopy() 메서드 호출을 기반으로 한다는 점을 명심할 가치가 있습니다 . 프로젝트에 라이브러리를 추가하려면 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()를 선호합니다. 다음은 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]

결론

배열에 요소를 추가하는 방법을 아는 것은 개발자가 기능과 가독성을 희생하지 않고 이전 코드를 빠르게 업데이트하는 데 도움이 됩니다. 또는 인터뷰를 통과하기 위해. Java 배열에 요소를 추가하는 방법에는 여러 가지가 있으므로 편한 방법을 자유롭게 선택하십시오.
코멘트
  • 인기
  • 신규
  • 이전
코멘트를 남기려면 로그인 해야 합니다
이 페이지에는 아직 코멘트가 없습니다