Java - List empty(null)チェック、3つの方法

Javaでリストが空であるか、nullオブジェクトであるかを確認する方法を紹介します。

1. List.isEmpty()でリストが空であることを確認する

List.isEmpty() は、リストオブジェクトがどの要素も持っていないときに true を返します。つまり、リストが空のときに true を返します。

もしリストオブジェクトが null なら、 isEmpty() メソッド呼び出し時に NullPointerException が発生するので null check も一緒にしなければなりません。 null の場合でも empty と同じように処理するのか、別の例外処理を行うのかは状況によって異なって処理することもできます。

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

public class Example1 {

    public static void main(String[] args) {

        List<String> list = Arrays.asList("apple", "grape", "banana", "kiwi");
        if (list == null || list.isEmpty()) {
            System.out.println("list is empty");
        }

        List<String> list2 = new ArrayList<>();
        if (list2 == null || list2.isEmpty()) {
            System.out.println("list2 is empty");
        }

        List<String> list3 = null;
        if (list3 == null || list3.isEmpty()) {
            System.out.println("list3 is empty");
        }
    }
}

Output:

list2 is empty
list3 is empty

2. List.size()でリストが空であることを確認する

List.size() はリストの要素数を返します。リストが空の場合は0を返します。リストの長さとゼロを比較して空であることを確認できます。 上記と同様に、Listオブジェクトがnullである可能性がある場合は、null checkを最初に行う必要があります。

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

public class Example2 {

    public static void main(String[] args) {

        List<String> list = Arrays.asList("apple", "grape", "banana", "kiwi");
        if (list == null || list.size() == 0) {
            System.out.println("list is empty");
        }

        List<String> list2 = new ArrayList<>();
        if (list2 == null || list2.size() == 0) {
            System.out.println("list2 is empty");
        }

        List<String> list3 = null;
        if (list3 == null || list3.size() == 0) {
            System.out.println("list3 is empty");
        }
    }
}

Output:

list2 is empty
list3 is empty

3. CollectionUtils.isEmpty()でリストが空であることを確認する

CollectionUtilsはApache commonsライブラリによって提供されるクラスです。

Mavenプロジェクトで以下のように設定することができます。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.1</version>
</dependency>

ライブラリ設定をしたら、 CollectionUtils.isEmpty() を使うことができます。このメソッドは、引数として渡されたリストオブジェクトがnullまたはemptyの場合にtrueを返します。

以下のようにnull checkをせずに使用できるため、より少ないコードで上記と同じ動作を実装できます。

import org.apache.commons.collections4.CollectionUtils;

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

public class Example3 {

    public static void main(String[] args) {

        List<String> list = Arrays.asList("apple", "grape", "banana", "kiwi");
        if (CollectionUtils.isEmpty(list)) {
            System.out.println("list is empty");
        }

        List<String> list2 = new ArrayList<>();
        if (CollectionUtils.isEmpty(list2)) {
            System.out.println("list2 is empty");
        }

        List<String> list3 = null;
        if (CollectionUtils.isEmpty(list3)) {
            System.out.println("list3 is empty");
        }
    }
}

Output:

list2 is empty
list3 is empty

3.1 CollectionUtils.isEmpty() の実装コード

ライブラリに実装された CollectionUtils.isEmpty() のコードを見ると、以下のようにメソッドの中で null check と isEmpty() をチェックしています。

public static boolean isEmpty(final Collection<?> coll) {
    return coll == null || coll.isEmpty();
}

Related Posts

codechachaCopyright ©2019 codechacha