指定の要素がリストに含まれるか調べる。java.util.List

ava.util.List.contains()プログラミング

チェックロジックを実装している時にこんな簡単な方法があったのか…と思ったことがあったので記事化。

例えば、共通の大きなチェックロジックがあったとして下記のような判定メソッドがあったとします。

private Boolean isCheckLogic(String param) throws XXXException {
  if (constsCode.APPLE.equals(param)
  || constsCode.OLENGE.equals(param)
  || constsCode.GRAPE.equals(param)) {
  return true;
  }
  return false;
}

constCodeクラスは下記のような想定です。

public class constClass {
  String APPLE = 'APPLE';
  String OLENGE = 'OLENGE';
  String GRAPE = 'GRAPE';
}

まあ、私はしばしばこういったコードを見ます。やり方は色々あると思うのですが、愚直にチェックロジックを書こうとすると上のような冗長に見えるチェックになりますよね。

これを、Java.util.Listインターフェイスのcontainsメソッドを使用して書き直してみるというのがこの記事の主旨です。

スポンサーリンク

Java.util.Listインターフェイスのcontainsメソッド

まずはcontainsが何をするメソッドなのかを調べます。

contains

boolean contains(Object o)
指定の要素がこのリストに含まれている場合にtrueを返します。つまり、このリストに、(o==null ? e==null : o.equals(e))となる要素eが1つ以上含まれている場合にのみtrueを返します。
定義:
contains、インタフェース: Collection<E>
パラメータ:
o - このリスト内にあるかどうかが判定される要素
戻り値:
指定された要素がこのリスト内にある場合はtrue
例外:
ClassCastException - 指定された要素の型が、このリストと互換でない場合(オプション)
NullPointerException - 指定された要素がnullで、このリストがnull要素を許可しない場合(オプション)

出典

判定メソッドを書き直す

constCodeクラスにjava.util.Listをインポートする。(Arraysもついでにインポートする)

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

public class constClass {
  String APPLE = 'APPLE';
  String OLENGE = 'OLENGE';
  String GRAPE = 'GRAPE';
  List<String> CHECKLIST = new ArrayList<String> {
  Arrays.asList(APPLE,OLENGE,GRAPE);
}

こうすることで、CHECKLISTに全ての固定値が格納されました。

こうするとチェックロジック側を書き換えられます。

private Boolean isCheckLogic(String param) throws XXXException {
  if (CHECKLIST.contains(param)) {
    return true;
  }
    return false;
}

めちゃめちゃ簡単になりましたね。CHECKLISTに格納された要素がparamに含まれる場合にはtrueが、含まれない場合はfalseが返却されます。

少しだけ成長。

コメント