Java - String 리스트에서 null, 빈 문자열 제거

문자열 리스트에서 null이나 빈 문자열(empty string)을 제거하는 방법을 소개합니다.

1. removeAll()으로 리스트에서 null, 빈 문자열 제거

List.removeAll(collection)은 리스트에서 인자로 전달된 collection의 요소들을 모두 제거합니다.

아래와 같이 removeAll()의 인자로 null과 빈 문자열이 있는 리스트를 전달하면, 리스트에서 null과 빈 문자열이 모두 제거됩니다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Example {

    public static void main(String[] args) {

        List<String> myList = new ArrayList<>(
                Arrays.asList("A", "", null, "B", "", null, "C"));

        myList.removeAll(Arrays.asList("", null));
        System.out.println(myList);
    }
}

Output:

[A, B, C]

2. removeIf()로 리스트에서 null, 빈 문자열 제거

List.removeIf()는 인자로 Lambda와 같은 함수를 전달할 수 있으며, 리스트에서 이 함수를 충족하는 요소들을 모두 제거합니다.

아래와 같이 요소가 null 또는 빈 문자열일 때 리스트에서 제거하는 조건을 Labmda로 구현해서 removeIf()에 전달하면 됩니다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Example1 {

    public static void main(String[] args) {

        List<String> myList = new ArrayList<>(
                Arrays.asList("A", "", null, "B", "", null, "C"));

        myList.removeIf((str) -> str == null || str.equals(""));
        System.out.println(myList);
    }
}

Output:

[A, B, C]

아래와 같이 Method Reference를 사용하여 구현할 수도 있습니다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;

public class Example2 {

    public static void main(String[] args) {

        List<String> myList = new ArrayList<>(
                Arrays.asList("A", "", null, "B", "", null, "C"));

        myList.removeIf(Objects::isNull);
        myList.removeIf(String::isEmpty);

        System.out.println(myList);
    }
}

Output:

[A, B, C]

3. Stream으로 리스트에서 null, 빈 문자열 제거

리스트를 Stream으로 만들고, Stream의 filter()를 사용하여 null과 빈 문자열인 요소를 제거할 수 있습니다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example3 {

    public static void main(String[] args) {

        List<String> myList = new ArrayList<>(
                Arrays.asList("A", "", null, "B", "", null, "C"));

        List<String> filteredList = myList.stream()
                .filter((str) -> str != null && !str.equals(""))
                .collect(Collectors.toList());

        System.out.println(filteredList);
    }
}

Output:

[A, B, C]
Loading script...
codechachaCopyright ©2019 codechacha