Java で配列が空/ヌル(Null/Empty)かどうかをチェックする方法

Mohammad Irfan 2023年1月30日 2020年9月20日
  1. Java での NULL 配列
  2. 配列に null 値が含まれる
  3. Java の空の配列
  4. Java で Apache Commons ライブラリを使って配列のヌルさをチェックする
  5. Java 8 を使用して配列のヌルをチェックする
Java で配列が空/ヌル(Null/Empty)かどうかをチェックする方法

このチュートリアルでは、Java で配列が NULL か空かをチェックする方法と、NULL チェック処理を理解するためのコード例を紹介します。

Java での NULL 配列

Java では、配列は似たようなタイプのデータを保持するオブジェクトです。配列は、インスタンス化されていない、またはnull 参照を指している場合にのみ、null になります。

この例では、2つの配列を作成しました。配列 arr は宣言されていますが、インスタンス化されていません。これは何のデータも保持せず、コンパイラによって割り当てられたヌル参照(デフォルト値)を参照します。配列 arr2 は宣言され、明示的に null を代入して null 配列を作成します。

この例を使って、配列が NULL かどうかを調べることができます。

public class SimpleTesting {

	String[] arr;
	String[] arr2 = null;
	
	public static void main(String[] args) {
		SimpleTesting obj = new SimpleTesting();
		if(obj.arr == null) {
			System.out.println("The array is null");
		}
		if(obj.arr2 == null) {
			System.out.println("The array2 is null");
		}
	}
}

出力:

The array is null
The array2 is null

配列に null 値が含まれる

これは、配列にヌル値が含まれている場合の 2 番目のシナリオです。この場合、配列はヌル値であると考えることができます。

例えば、5つの要素を含む文字列の配列があるとします。配列は初期化されていないので、コンパイラによって割り当てられた null(デフォルト値)を保持しています。

public class SimpleTesting {

	String[] arr = new String[5];

	public static void main(String[] args) {
		boolean containNull = true;
		SimpleTesting obj = new SimpleTesting();
		for(int i = 0; i<obj.arr.length; i++) {
			if(obj.arr[i] != null) {
				containNull = false;
				break;
			}
		}
		if(containNull) {
			System.out.println("Array is null");
		}
	}
}

出力:

Array is null

Java の空の配列

配列が空であるのは、それが 0(0)の要素を含み、長さが 0 の場合だけです。配列オブジェクトの length プロパティを使ってテストすることができます。

public class SimpleTesting {

	String[] arr = new String[0];

	public static void main(String[] args) {
		SimpleTesting obj = new SimpleTesting();
		if(obj.arr.length == 0) {
			System.out.println("The array is Empty");
		}
	}
}

出力:

The array is Empty

Java で Apache Commons ライブラリを使って配列のヌルさをチェックする

Apache を使っている場合は、ArrayUtils クラスを使って配列が空かどうかを調べる。ArrayUtils クラスは isEmpty() メソッドを提供しており、これは真か偽かのどちらかのブール値を返します。apache ライブラリの詳細はこちらをご覧ください

import org.apache.commons.lang3.ArrayUtils;

public class SimpleTesting {

	String[] arr = new String[0];

	public static void main(String[] args) {
		SimpleTesting obj = new SimpleTesting();
		Boolean isEmpty = ArrayUtils.isEmpty(obj.arr);
		if(isEmpty) {
			System.out.println("Array is Empty");
		}
	}
}

出力:

Array is Empty

Java 8 を使用して配列のヌルをチェックする

Java 8 以上のバージョンを使用している場合は、Arrays クラスの stream() メソッドを使用して allMatch() メソッドを呼び出し、配列に null 値が含まれているかどうかをチェックすることができます。

これは配列にヌル値が含まれている場合です。

import java.util.Arrays;
import java.util.Objects;

public class SimpleTesting {

	String[] arr = new String[10];

	public static void main(String[] args) {
		SimpleTesting obj = new SimpleTesting();
		Boolean containNull = Arrays.stream(obj.arr).allMatch(Objects::nonNull);
		if(!containNull) {
			System.out.println("Array is null");
		}
	}
}

出力:

Array is null

関連記事 - Java Array