웹사이트 검색

Java List 및 ListArray에 대해 remove() 메서드를 사용하는 방법


소개

Java 목록 remove() 메서드는 목록에서 요소를 제거하는 데 사용됩니다. ArrayList는 List 인터페이스의 가장 널리 사용되는 구현이므로 여기의 예제에서는 ArrayList remove() 메서드를 사용합니다.

Java 목록 remove() 메서드

목록에서 요소를 제거하는 두 가지 remove() 메서드가 있습니다.

  1. E remove(int index): 이 메서드는 지정된 인덱스에서 요소를 제거하고 반환합니다. 후속 요소는 한 위치 왼쪽으로 이동합니다. 이 메서드는 지정된 인덱스가 범위를 벗어나는 경우 IndexOutOfBoundsException을 발생시킵니다. 목록 구현이 이 작업을 지원하지 않으면 UnsupportedOperationException이 발생합니다.
  2. boolean remove(Object o) 이 메서드는 지정된 Object의 첫 번째 항목을 제거합니다. 목록에 지정된 요소가 포함되어 있지 않으면 변경되지 않은 상태로 유지됩니다. 이 메서드는 요소가 목록에서 제거되면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 개체가 null이고 목록이 null 요소를 지원하지 않으면 NullPointerException이 발생합니다. 목록 구현이 이 메서드를 지원하지 않으면 UnsupportedOperationException이 발생합니다.

remove() 메서드의 몇 가지 예를 살펴보겠습니다.

1. 주어진 인덱스에서 요소를 제거합니다.

이 예에서는 E remove(int index)를 탐색합니다.

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

list.add("A");
list.add("B");
list.add("C");
list.add("C");
list.add("B");
list.add("A");

System.out.println(list);

String removedStr = list.remove(1);
System.out.println(list);
System.out.println(removedStr);

먼저 이 코드는 목록을 구성하고 인쇄합니다.

Output
[A, B, C, C, B, A]

그런 다음 이 코드는 remove(1)를 실행하여 인덱스 1의 요소를 제거합니다. 마지막으로 새 결과 목록을 인쇄하고 제거된 요소도 인쇄합니다.

Output
[A, C, C, B, A] B

색인 1B가 제거되었습니다.

2. remove(int index) 메서드가 있는 IndexOutOfBoundsException

이 예는 인덱스가 목록을 초과할 때 E remove(int index)를 탐색합니다.

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

list.add("A");

String removedStr = list.remove(10);

이 코드는 길이가 1인 목록을 구성합니다. 그러나 코드가 인덱스 10에서 요소를 제거하려고 시도하면 다음과 같습니다.

Output
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 10 out of bounds for length 1 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) at java.base/java.util.Objects.checkIndex(Objects.java:372) at java.base/java.util.ArrayList.remove(ArrayList.java:535) at com.journaldev.java.ArrayListRemove.main(ArrayListRemove.java:19)

이 시도는 IndexOutOfBoundsException을 발생시킵니다.

3. 수정할 수 없는 목록 remove() UnsupportedOperationException 예제

List.of() 메서드는 수정할 수 없는 불변 목록을 만듭니다.

List<String> list = List.of("a", "b");

System.out.println(list);

String removedStr = list.remove(1);

System.out.println(removedStr);

먼저 이 코드는 변경할 수 없는 목록을 구성하고 인쇄합니다.

  1. Output
    [a, b]

그런 다음 코드는 remove() 메서드를 사용하여 인덱스 1에서 요소를 제거하려고 시도합니다.

  1. Exception in thread "main" java.lang.UnsupportedOperationException
  2. at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
  3. at java.base/java.util.ImmutableCollections$AbstractImmutableList.remove(ImmutableCollections.java:258)
  4. at TestRemoveList.main(TestRemoveList.java:12)

이 시도는 UnsupportedOperationException을 발생시킵니다. list.remove(\a\) 또는 list.remove(\b\)를 시도하면 UnsupportedOperationException도 발생합니다.

4. 목록에서 개체 제거

이 예에서는 boolean remove(Object o)를 탐색합니다.

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

list.add("A");
list.add("B");
list.add("C");
list.add("C");
list.add("B");
list.add("A");

System.out.println(list);

boolean isRemoved = list.remove("C");
System.out.println(list);
System.out.println(isRemoved);

isRemoved = list.remove("X");
System.out.println(list);
System.out.println(isRemoved);

먼저 이 코드는 목록을 구성하고 인쇄합니다.

Output
[A, B, C, C, B, A]

그런 다음 이 코드는 remove(\C\)를 실행하여 C의 첫 번째 인스턴스를 제거합니다. 다음으로 결과 목록을 인쇄하고 작업의 부울 값( true)도 인쇄합니다.

Output
[A, B, C, B, A] true

그런 다음 이 코드는 remove(\X\)를 실행하지만 목록에 X의 인스턴스가 없으므로 목록이 변경되지 않습니다. 마지막으로 목록을 인쇄하고 작업의 부울 값( false)도 인쇄합니다.

Output
[A, B, C, B, A] false

결론

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

권장 읽기:

  • 자바 목록
  • 자바 ArrayList

참조:

  • remove() API 문서 나열