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の場合に指定したデフォルト値を返却する。 |
forEach | Mapに含まれる全てのEntryに対して、任意の処理を行う。 |
replaceAll | Mapに含まれる全ての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使っときましょう。