【Java】複数の文字列のNULL判定を実施する方法の紹介

今回は、複数の文字列が「すべてNULL」、「いずれかNULL」を判定する方法について、次の実装例と使用例を紹介していきます。

  1. for文を使用する。
  2. java.util.streamを使用する。
  3. Apache Commons Langライブラリを使用する。

Apache Commons Langライブラリを使用した場合は、正しくは「NULL判定」の動作ではありません。詳細については、本ページ内を確認してください。

スポンサーリンク

検証環境

検証に使用した環境/ライブラリを次に記載します。

  • Java
    • バージョン:11
  • Apache Commons Lang
    • バージョン:3.12.0

for文

実装例(すべてNULL)

for文を使用して「すべてNULL」の確認をするための実装例は、次のようになります。

public boolean isAllNull(String... values) {
  // 値が未設定かどうかを確認します。
  if (null == values || 0 == values.length) {
    return true;
  }
  for (String s : values) {
    // 1つでもNULLでない場合は、「すべてNULL」の条件を満たさないため終了します。
    if (null != s) {
      return false;
    }
  }
  return true;
}

実装例を使用して実行した結果は、次のようになります。

isAllNull() = true
isAllNull(null, null) = true
isAllNull("a", null) = false
isAllNull("a", "b") = false

実装例(いずれかNULL)

for文を使用して「いずれかNULL」の確認をするための実装例は、次のようになります。

public boolean isAnyNull(String... values) {
  // 値が未設定かどうかを確認します。
  if (null == values || 0 == values.length) {
    return true;
  }
  for (String s : values) {
    // 1つでもNULLの場合は、「いずれかNULL」の条件を満たすため終了します。
    if (null == s) {
      return true;
    }
  }
  return false;
}

実装例を使用して実行した結果は、次のようになります。

isAnyNull() = true
isAnyNull(null, null) = true
isAnyNull("a", null) = true
isAnyNull("a", "b") = true

引数の型につづけて「...」を指定すると可変長引数になります。引数に任意の個数を指定できるようになります。

java.util.stream

実装例(すべてNULL)

java.util.streamを使用して「すべてNULL」の確認をするための実装例は、次のようになります。

条件を確認するときに「allMatch」を使用することで、すべて一致しているかどうかを判定することができるようになります。

public boolean isAllNullStream(String... values) {
  // 値が未設定かどうかを確認します。
  if (null == values || 0 == values.length) {
    return true;
  }
  // 「すべてNULL」の条件を満たしているかどうかを「allMatch」を使用して確認します。
  // 1つでもNULLでない場合は、「すべてNULL」の条件を満たさないため「false」が返却されます。
  return Stream.of(values).allMatch(e -> null == e);
}

実装例を使用して実行した結果は、次のようになります。

isAllNullStream() = true
isAllNullStream(null, null) = true
isAllNullStream("a", null) = false
isAllNullStream("a", "b") = false

実装例(いずれかNULL)

java.util.streamを使用して「いずれかNULL」の確認をするための実装例は、次のようになります。

条件を確認するときに「anyMatch」を使用することで、いずれか一致しているかどうかを判定することができるようになります。

public boolean isAnyNullStream(String... values) {
  // 値が未設定かどうかを確認します。
  if (null == values || 0 == values.length) {
    return true;
  }
  // 「いずれかNULL」の条件を満たしているかどうかを「anyMatch」を使用して確認します。
  // 1つでもNULLの場合は、「いずれかNULL」の条件を満たすため「true」が返却されます。
  return Stream.of(values).anyMatch(e -> null == e);
}

実装例を使用して実行した結果は、次のようになります。

isAnyNullStream() = true
isAnyNullStream(null, null) = true
isAnyNullStream("a", null) = true
isAnyNullStream("a", "b") = false

引数の型につづけて「...」を指定すると可変長引数になります。引数に任意の個数を指定できるようになります。

Apache Commons Lang

実装例(すべてNULL)

Apache Commons Langライブラリを使用して、「すべてNULL」かどうかを確認するための使用例は、次のようになります。

org.apache.commons.lang3.StringUtils.isAllEmpty(null, null)

使用例で紹介した「isAllEmpty」は、次の値を未設定と判断します。

  • NULL
  • 空文字列

次のように使用すると使用例と同じ結果になります。使用するときは、注意してください。

org.apache.commons.lang3.StringUtils.isAllEmpty("", "")

実装例(いずれかNULL)

Apache Commons Langライブラリを使用して、「いずれかNULL」かどうかを確認するための使用例は、次のようになります。

org.apache.commons.lang3.StringUtils.isAnyEmpty("a", null)

使用例で紹介した「isAnyEmpty」は、次の値を未設定と判断します。

  • NULL
  • 空文字列

次のように使用すると使用例と同じ結果になります。使用するときは、注意してください。

org.apache.commons.lang3.StringUtils.isAllEmpty("a", "")

まとめ

複数の文字列のNULL判定をする方法の実装例とライブラリ使用例を紹介しました。