MapUtils の使い方 (Apache Commons Collections)

プログラミング
この記事は約4分で読めます。

Java の Map 操作を Null セーフで行いたい場合、Apache Commons Collections の MapUtils を使うと良いです。

スポンサーリンク

Map インスタンス

// 要素あり
Map<String, Object> map = new HashMap<>();
map.put("str", "あいう");
map.put("int", 123);
map.put("bool", true);

// 空
Map<String, Object> emptyMap = new HashMap<>();

isEmpty

MapUtils.isEmpty(map); // false
MapUtils.isEmpty(emptyMap); // true
MapUtils.isEmpty(null); // true

isNotEmpty

MapUtils.isNotEmpty(map); // true
MapUtils.isNotEmpty(emptyMap); // false
MapUtils.isNotEmpty(null); // false

getString

MapUtils.getString(map, "str"); // あいう
MapUtils.getString(emptyMap, "str"); // null
MapUtils.getString(null, "str"); // null
MapUtils.getString(map, "int"); // 123

int を取得しようとすると自動的に String にキャストされます。

getString(デフォルト有り)

MapUtils.getString(map, "str", "default"); // あいう
MapUtils.getString(emptyMap, "str", "default"); // default
MapUtils.getString(null, "str", "default"); // default
MapUtils.getString(map, "int", "default"); // 123

null の場合、デフォルトに設定した値(3 番目の引数)が返却される。

getInteger

MapUtils.getInteger(map, "int"); // 123
MapUtils.getInteger(emptyMap, "int"); // null
MapUtils.getInteger(null, "int"); // null
MapUtils.getInteger(map, "str"); // null

String を取得しようとすると int へのキャストができず null が返却されます。(4 つ目)

ちなみにキー str に数値文字列が入っている場合は int にキャストされます。

getInteger(デフォルト有り)

MapUtils.getInteger(map, "int", 999); // 123
MapUtils.getInteger(emptyMap, "int", 999); // 999
MapUtils.getInteger(null, "int", 999); // 999
MapUtils.getInteger(map, "str", 999); // 999

null の場合、デフォルトに設定した値(3 番目の引数)が返却される。

getBoolean

MapUtils.getBoolean(map, "bool"); // true
MapUtils.getBoolean(emptyMap, "bool"); // null
MapUtils.getBoolean(null, "bool"); // null
MapUtils.getBoolean(map, "str"); // false
MapUtils.getBoolean(map, "int"); // true

String を取得した場合 false になります。

int を取得した場合、取得した数値によって結果が変わります。

  • 0 以外  →  true
  • 0     →  false

getBoolean(デフォルト有り)

MapUtils.getBoolean(map, "bool", true); // true
MapUtils.getBoolean(emptyMap, "bool", true); // true
MapUtils.getBoolean(null, "bool", true); // true
MapUtils.getBoolean(map, "str", true); // false
MapUtils.getBoolean(map, "int", true); // true

null の場合、デフォルトに設定した値(3 番目の引数)が返却される。

コメント

タイトルとURLをコピーしました