개발자는 기록이 답이다
Java List에서 요소 삭제: remove(), removeAll(), removeIf() 메서드 사용법 비교 본문
Java List에서 요소 삭제: remove(), removeAll(), removeIf() 메서드 사용법 비교
slow-walker 2023. 10. 24. 09:45
List에서 요소를 삭제하는 방법을 위해 .rem 만 입력해도 4가지 방법이 나온다.
1. remove(int index)
`remove(int index)` 메서드는 지정된 인덱스에 있는 요소를 삭제합니다.
import java.util.ArrayList;
import java.util.List;
public class RemoveAtIndexExample {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
fruits.remove(1); // 인덱스 1에 있는 "Banana" 삭제
System.out.println(fruits); // 출력: [Apple, Cherry]
}
}
2. remove(Object o)
`remove(Object o)` 메서드는 주어진 객체와 동일한 객체를 리스트에서 삭제합니다. 객체의 동등성(Equality)을 기반으로 동작합니다.
import java.util.ArrayList;
import java.util.List;
public class RemoveObjectExample {
public static void main(String[] args) {
List<String> colors = new ArrayList<>();
colors.add("Red");
colors.add("Green");
colors.add("Blue");
colors.remove("Green"); // "Green" 객체 삭제
System.out.println(colors); // 출력: [Red, Blue]
}
}
3. removeAll
`removeAll` 메서드는 지정된 컬렉션의 요소와 일치하는 모든 요소를 현재 리스트에서 삭제합니다.
import java.util.ArrayList;
import java.util.List;
public class RemoveAllExample {
public static void main(String[] args) {
List numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
List toRemove = new ArrayList<>();
toRemove.add(2);
toRemove.add(3);
numbers.removeAll(toRemove);
System.out.println(numbers); // 출력: [1]
}
}
4. removeIf
`removeIf` 메서드는 주어진 `Predicate` 조건을 만족하는 요소를 삭제합니다.
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
public class RemoveIfExample {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
numbers.add(i);
}
// Predicate를 사용하여 조건 정의 : 짝수를 찾는 isEven
Predicate<Integer> isEven = number -> number % 2 == 0;
// removeIf 메서드를 사용하여 조건을 만족하는 요소 삭제 : Predicate가 true를 반환하는 요소들을 삭제
numbers.removeIf(isEven);
// 삭제된 결과 출력
System.out.println(numbers); // 출력: [1, 3, 5, 7, 9]
}
}
Java 8에서 `List` 및 다른 컬렉션 클래스에 중요한 업데이트와 추가된 메서드 중 하나는 removeIf(Predicate) 메서드입니다. 이 메서드는 이전 버전의 Java에서는 사용할 수 없었으며 Java 8부터 도입되었습니다.
- Java 8 이전: Java 8 이전 버전에서는 `removeIf()` 메서드가 존재하지 않았으므로 일반적으로 `for` 루프 또는 `Iterator`를 사용하여 요소를 조건에 따라 제거해야 했습니다. 이는 코드를 더 복잡하게 만들 수 있습니다.
- Java 8 이후: Java 8부터는 `List` 인터페이스에 `removeIf(Predicate)` 메서드가 추가되었습니다. 이 메서드를 사용하면 간결하고 가독성 높은 방식으로 컬렉션에서 조건에 맞는 요소를 삭제할 수 있습니다. 이 메서드를 사용하여 조건을 만족하는 요소를 삭제하는 데 효율적입니다.
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
// Java 8 이후
numbers.removeIf(number -> number % 2 == 0);
'언어 > Java' 카테고리의 다른 글
JVM이해하기 - JVM의 구조 (1) | 2023.11.20 |
---|---|
JVM이해하기 - 자바, JVM, JDK, JRE의 차이 (2) | 2023.11.20 |
Java, 자료구조 Array 배열의 개념과 시간복잡도 (1) | 2023.09.27 |
Java로 보는 시간복잡도, 공간복잡도 (0) | 2023.08.29 |
시간 복잡도 Time Complexity with Java (0) | 2023.08.29 |