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使っときましょう。