Java List 및 ListArray에 대해 remove() 메서드를 사용하는 방법
소개
Java 목록 remove()
메서드는 목록에서 요소를 제거하는 데 사용됩니다. ArrayList
는 List 인터페이스의 가장 널리 사용되는 구현이므로 여기의 예제에서는 ArrayList
remove()
메서드를 사용합니다.
Java 목록 remove() 메서드
목록에서 요소를 제거하는 두 가지 remove()
메서드가 있습니다.
E remove(int index)
: 이 메서드는 지정된 인덱스에서 요소를 제거하고 반환합니다. 후속 요소는 한 위치 왼쪽으로 이동합니다. 이 메서드는 지정된 인덱스가 범위를 벗어나는 경우IndexOutOfBoundsException
을 발생시킵니다. 목록 구현이 이 작업을 지원하지 않으면UnsupportedOperationException
이 발생합니다.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
색인 1
의 B
가 제거되었습니다.
2. remove(int index) 메서드가 있는 IndexOutOfBoundsException
이 예는 인덱스가 목록을 초과할 때 E remove(int index)
를 탐색합니다.
List<String> list = new ArrayList<>();
list.add("A");
String removedStr = list.remove(10);
이 코드는 길이가 1
인 목록을 구성합니다. 그러나 코드가 인덱스 10
에서 요소를 제거하려고 시도하면 다음과 같습니다.
OutputException 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);
먼저 이 코드는 변경할 수 없는 목록을 구성하고 인쇄합니다.
- Output[a, b]
그런 다음 코드는 remove()
메서드를 사용하여 인덱스 1
에서 요소를 제거하려고 시도합니다.
- Exception in thread "main" java.lang.UnsupportedOperationException
- at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
- at java.base/java.util.ImmutableCollections$AbstractImmutableList.remove(ImmutableCollections.java:258)
- 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 문서 나열