Java - Stringリストからnull、空の文字列を削除する

文字列リストからnullまたは空の文字列を削除する方法を紹介します。

1. removeAll()でリストからnull、空の文字列を削除する

List.removeAll(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]
codechachaCopyright ©2019 codechacha