목차

    개요

    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로 하는 방법도 있습니다. 

    아래의 블로그 글을 참고해주시면 됩니다.

    https://hi-dot.tistory.com/4

     

    List.removeIf 사용하기

    List 자체 함수로 위에서 작성하였던 코드를 바꾸면 아래와 같이 됩니다.

    list.removeIf(str -> str.equals("A"));
    System.out.println(String.join(", ", list));

     

    매우 간결하며 직관적으로 변경되었음을 볼 수 있습니다.

     

     

     

    참고자료

    https://velog.io/@peanut_/Java-List.removeIf

    https://hi-dot.tistory.com/4