Java8のMapクラスに追加されたgetOrDefaultメソッド

Java8のMapクラスに追加されたgetOrDefaultメソッド

Java8のMapクラスにgetOrDefaultというメソッドが追加されました。

このメソッドはキーに対する値がnullであれば初期値に置き換えるというメソッドです。キーのマッピングが含まれていない場合はdefaultValueを返すメソッドです。

キーに対して値をセットするわけではありません。

ちょっとわかりにくいので以下を参照ください。

import java.util.Map;
import java.util.HashMap;
public class Sample {
  public static void main(String[] args) {
    Map<String,String> map = new HashMap<>();
    String str = map.getOrDefault("key","value");
    System.out.println(map.get("key"));
    System.out.println(str);
  }
}

結果は以下のようになります。

null
value

コメント

  1. ROACH より:

    このメソッドはキーに対する値がnullであれば初期値に置き換えるというメソッドです。
    とありますが、
    “このマップにそのキーのマッピングが含まれていない場合はdefaultValueを返します。”
    が正しいと思います。(参照:https://docs.oracle.com/javase/jp/8/docs/api/java/util/Map.html)

    つまり、Map内に (key, null) の組み合わせが存在する場合においてはnullを置き換えることはないと思います。
    Map map = new HashMap();
    map.put(1,null);
    String value = map.getOrDefault(1,”defaultV”); <- これはnull のままだと思います。
    System.out.println(value);
    出力は "defaultV" ではなく null になると思います。

    • 高橋 より:

      ご丁寧にありがとうございます。
      今少し時間がなく、試して確認次第記事を修正いたします。

      わざわざありがとうございます★

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