웹사이트 검색

Java 목록에 대해 add() 및 addAll() 메서드를 사용하는 방법


소개

이 기사에서는 Java의 List 메서드 add()addAll()에 대해 알아봅니다.

자바 목록 추가()

이 메서드는 목록에 요소를 추가하는 데 사용됩니다. 목록에 요소를 추가하는 두 가지 방법이 있습니다.

  1. add(E e): 목록 끝에 요소를 추가합니다. ListGenerics를 지원하므로 추가할 수 있는 요소의 유형은 목록이 생성될 때 결정됩니다.
  2. add(int index, E element): 주어진 index에 요소를 삽입합니다. 주어진 인덱스의 요소는 목록의 오른쪽으로 이동합니다. 지정된 인덱스가 범위를 벗어나면 이 메서드는 IndexOutOfBoundsException을 발생시킵니다.

다음은 List add() 메서드의 몇 가지 예입니다.

package com.journaldev.examples;

import java.util.ArrayList;
import java.util.List;

public class ListAddExamples {

	public static void main(String[] args) {

		List<String> vowels = new ArrayList<>();

		vowels.add("A"); // [A]
		vowels.add("E"); // [A, E]
		vowels.add("U"); // [A, E, U]

		System.out.println(vowels); // [A, E, U]

		vowels.add(2, "I"); // [A, E, I, U]
		vowels.add(3, "O"); // [A, E, I, O, U]

		System.out.println(vowels); // [A, E, I, O, U]
	}
}

먼저 이 코드는 A, EU를 목록에 추가하고 [A, E, U].

다음으로 이 코드는 I2의 인덱스에 추가하여 [A, E, I, U]를 생성합니다. 그런 다음 3의 인덱스에 O를 추가하여 [A, E, I, O, U]를 생성합니다. 마지막으로 이 목록이 화면에 출력됩니다.

자바 리스트 addAll()

이 메서드는 컬렉션의 요소를 목록에 추가하는 데 사용됩니다. 두 개의 오버로드된 addAll() 메서드가 있습니다.

  1. addAll(Collection c): 이 메서드는 지정된 컬렉션의 모든 요소를 목록. 삽입 순서는 컬렉션 반복자가 반환하는 순서에 따라 다릅니다.
  2. addAll(int index, Collection c): 이 메서드를 사용할 수 있습니다. 지정된 인덱스에서 컬렉션의 요소를 삽입합니다. 컬렉션의 요소를 위한 공간을 만들기 위해 목록의 모든 요소가 오른쪽으로 이동합니다.

다음은 List addAll() 메서드의 몇 가지 예입니다.

package com.journaldev.examples;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListAddAllExamples {

	public static void main(String[] args) {

		List<Integer> primeNumbers = new ArrayList<>();

		primeNumbers.addAll(Arrays.asList(2, 7, 11));

		System.out.println(primeNumbers); // [2, 7, 11]

		primeNumbers.addAll(1, Arrays.asList(3, 5));

		System.out.println(primeNumbers); // [2, 3, 5, 7, 11]
	}
}

먼저 이 코드는 [2, 7, 11] 값으로 새 목록을 만듭니다. 그러면 이 목록이 화면에 출력됩니다.

다음으로 [3, 5] 값으로 두 번째 목록이 생성됩니다. 그런 다음 이 두 번째 목록은 addAll()의 인덱스가 1인 첫 번째 목록에 추가됩니다. 그 결과 [2, 3, 5, 7, 11] 목록이 화면에 출력됩니다.

List add() 메서드가 있는 UnsupportedOperationException

List add()addAll() 메서드 설명서에는 작업이 선택 사항으로 언급되어 있다고 명시되어 있습니다. 목록 구현이 지원하지 않을 수 있음을 의미합니다. 이 경우 목록 add() 메서드는 UnsupportedOperationException을 발생시킵니다. 목록에 요소를 추가할 때 이 예외가 발생하는 두 가지 일반적인 시나리오가 있습니다.

  1. Arrays.asList(): 이 메서드는 지정된 배열로 뒷받침되기 때문에 고정 크기 목록을 반환합니다. 목록 크기가 변경되는 모든 작업은 UnsupportedOperationException을 발생시킵니다.
  2. Collections.unmodifiableList(List l): 이 메서드는 주어진 목록의 수정 불가능한 보기를 반환합니다. 따라서 add() 작업은 UnsupportedOperationException을 발생시킵니다.

다음은 고정 크기 목록에서 추가 작업이 있는 UnsupportedOperationException의 예입니다.

jshell> List<Integer> ints = Arrays.asList(1,2,3);
ints ==> [1, 2, 3]

jshell> ints.add(4);
|  Exception java.lang.UnsupportedOperationException
|        at AbstractList.add (AbstractList.java:153)
|        at AbstractList.add (AbstractList.java:111)
|        at (#4:1)

먼저 이 코드는 [1, 2, 3]의 고정 크기 목록을 만듭니다. 그런 다음 이 코드는 목록에 4를 추가하려고 시도합니다. 이로 인해 UnsupportedOperationException이 발생합니다.

다음은 주어진 목록의 수정 불가능한 보기에 대한 추가 작업이 포함된 UnsupportedOperationException의 예입니다.

jshell> List<String> strs = new ArrayList<>();
strs ==> []

jshell> strs.add("A");
$6 ==> true

jshell> List<String> strs1 = Collections.unmodifiableList(strs);
strs1 ==> [A]

jshell> strs1.add("B");
|  Exception java.lang.UnsupportedOperationException
|        at Collections$UnmodifiableCollection.add (Collections.java:1058)
|        at (#8:1)

먼저 이 코드는 목록에 A를 추가합니다. 다음으로 이 코드는 이전 목록의 수정할 수 없는 보기에 B를 추가하려고 시도합니다. 이로 인해 UnsupportedOperationException이 발생합니다.

결론

이 기사에서는 Java의 List 메서드 add()addAll()에 대해 배웠습니다.

권장 읽기:

  • 자바 목록
  • 자바 ArrayList

참조:

  • API 문서 나열
  • StackOverflow 질문