アレについて記す

Java8でMapに追加されたメソッドを試してみた

Posted on March 26, 2014 at 21:15 (JST)

LambdaやStream、Date and Time APIなどが話題となっているJava8ですが、
Mapインターフェースに追加されたメソッドが便利そうだったので試してみました。

サンプルソースはGithubにて公開しています。[ java8-sample ]

Java8では以下のメソッドがMapインターフェースに追加されています。
APIはコチラ

メソッド概要
getOrDefault指定したkeyの要素が存在しない、または値がNULLの場合に指定したデフォルト値を返却する。
forEachMapに含まれる全てのEntryに対して、任意の処理を行う。
replaceAllMapに含まれる全てのEntryの値を、任意の処理にて算出した値で置き換える。
replace指定したkeyと値に一致する要素が存在した場合、その要素の値を任意の値に置き換える。
keyだけを一致条件にするインターフェースも用意されている。
remove指定したkeyと値に一致する要素が存在した場合、その要素を削除する。
putIfAbsent指定したkeyの要素が存在しない、または値がNULLの場合に指定したkeyと値でputする。
computeIfAbsent指定したkeyの要素が存在しない、または値がNULLの場合に指定したkeyと任意の処理で算出した値をputする。
computeIfPresent指定したkeyの要素が存在した場合、任意の処理で算出した値で置き換える。
compute指定したkeyの要素が存在した場合、任意の処理にて算出した値で置き換える。存在しなかった場合は要素を追加する。
merge指定したkeyにてgetした値と、任意の値を引数とする関数にて算出した値で置き換え、もしくは要素の追加を行う。

以下が遊んだコードになります。

追加されたメソッドのほとんどは【指定したkeyで引っぱった値がNULL】と【keyに紐づく要素が存在しない】を同義として扱う仕様となっています。
なので、値としてNULLを入れとくのは避けたほうが良さそうですね。Optional使っときましょう。