Java
Apache
初心者
新人プログラマ応援

【Java】リストの要素がnullもしくは空であることをチェックしたい【CollectionUtils】

最近、ソースレビューばっかりやってるんですが、リストのnull・空チェックを頑張ってくれている子が立て続けに出たので、「もしかして意外と知らないのかも?」と思い、まとめてみました。

解答1)頑張ったやり方

最近よく私がレビュー指摘を入れた「頑張ったチェック」はこんな感じ:arrow_down:

頑張った処理
List<String> strList = new ArrayList<String>();
// strListがどこかで定義されていたりメソッドの引数で入ってきたりしているとして・・・

if (strList == null || strList.size() == 0) {
  return true;
}

うん、あってる。
null&サイズチェックが出来れば、とりあえずつまらないnullPointerExceptionは回避できる。
4~6月ごろの新人研修だと、この書き方ができれば合格 :white_flower:

解答2)スマートなやり方

Javaには(Javaに限らずプログラミング言語にはたいてい)便利な外部ライブラリがたくさん揃ってます。
有名ドコだと「org.apache.commons」とか。
今回はorg.apache.commonsを使ってスマートに書いてみます。

スマートな処理
import org.apache.commons.collections4.*

List<String> strList = new ArrayList<String>();
// strListがどこかで定義されていたりメソッドの引数で入ってきたりしているとして・・・

if (CollectionUtils.isEmpty(strList)) {
  return true;
}

注目すべきはif文の中:exclamation:
外部ライブラリの1つである「Apache Commons Collections」を使いました。
※2018/06/11時点での最新のドキュメントはこちら :arrow_right: からApache Commons Collections 4.1 API

Apache Commons CollectionsはJavaのCollection系を便利に扱うライブラリで、この中にnullチェックとサイズ0チェックをまとめてやってくれるCollectionUtils.isEmpty()があるのです!

注意!

外部ファイルなので、Javaを普通にインストールしただけでは使えません:cry:
ダウンロードして読み込ませる必要があります。

eclipseだと、CollectionUtilsを入力補完したときにimport候補にorg.apache.commons.collections4.*が出てくれば、読み込み済みと判断できます。
ただ、たいていのJava案件ではほぼ導入されてます、多分。

まとめ

Listのnull・空チェックは、CollectionUtils.isEmpty()使うとすっきり書ける :pencil2:
ただし、Apache Commons Collectionsを事前に読み込んでいることが条件です。