読者です 読者をやめる 読者になる 読者になる

java で 二つの Map のキー部分が重複する場合しない場合を分ける実装はどうすれば?

問題

二つのマップが与えられる

Map<Integer, String> map1;
Map<Integer, String> map2;

この二つのマップでそれらに含まれる任意のキーに対して

  • 両方に値がある場合
  • map1 にのみ値がある場合
  • map2 にのみ値がある場合

を考慮した実装を行いたい.このような場合にどう実装すべきか?

実装

愚直に実装した場合

毎回書くのめんどいのでなんか簡単な書き方かうまいことメソッドにできればうれしい.

Set<Integer> set = new HashSet<>(map1.keySet());
set.addAll(map2.keySet());
foreach (Integer key : set) {
    String value1 = map1.get(key);
    String value2 = map2.get(key);
    if (value1 != null && value2 != null) {
      // 両方に値がある場合
    } else if (value1 != null && value2 == null) {
      // map1 にのみ値がある場合
    } else if (value1 == null && value2 != null) {
      // map2 にのみ値がある場合
    }
}