목차
개요
List 사용 중에 목록에서 특정 조건을 만족하는 요소를 삭제하는 로직을 다룰 일이 종종 있습니다.
이 때, 그 동안은 매번 반복문을 작성하여 구현하였는데 List 자체 메서드에 좋은 기능이 있다는 것을 알게되어 글을 정리하게 되었습니다.
기존 사용하던 방법
for문을 돌려가며 찾아서 삭제 했었습니다.
import java.util.*;
public class test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
for(int i=0;i<list.size();i++){
String str = list.get(i);
if(str.equals("A")) list.remove(i--);
}
System.out.println(String.join(", ", list));
}
}
위와 같이 리스트 중 A인 원소가 있으면 삭제하라는 방식의 코드였습니다.
해당 코드로 실행하고자하면 A가 삭제 될 때, 리스트의 전체 길이가 주는 것을 고려하여 i를 하나 빼주어야 합니다.
이 때문에 i-1 값을 생각하고 코드를 작성해야해서 가독성이 떨어집니다.
iterator로 하는 방법도 있습니다.
아래의 블로그 글을 참고해주시면 됩니다.
List.removeIf 사용하기
List 자체 함수로 위에서 작성하였던 코드를 바꾸면 아래와 같이 됩니다.
list.removeIf(str -> str.equals("A"));
System.out.println(String.join(", ", list));
매우 간결하며 직관적으로 변경되었음을 볼 수 있습니다.
참고자료
'Java' 카테고리의 다른 글
Arrays.asList() 사용 시 주의할 점 (0) | 2025.04.03 |
---|---|
상속관계의 클래스 일 때, @Builder 사용하기 (0) | 2024.11.16 |
ObjectMapper, Pattern 등의 클래스를 싱글톤으로 사용해도 될지 고민했던 내역 (0) | 2024.11.15 |
인텔리제이에서 자바 버전 변경하기 (0) | 2023.10.17 |
Java에서의 HashMap 동작 원리 파악하기 (0) | 2023.07.27 |