0

私が理解できなかったテキストは次のとおりです。

(Map インターフェースの) 1 つの Map を別の Map にダンプするという明白な使用法に加えて、2 つ目の、より微妙な使用法があります。Map を使用して、属性と値のペアのコレクションを表すとします。putAll 操作を Map 変換コンストラクターと組み合わせて使用​​すると、デフォルト値を使用して属性マップの作成を適切に実装できます。以下は、この手法を示す静的ファクトリ メソッドです。

  static <K, V> Map<K, V> newAttributeMap(Map<K, V>defaults, Map<K, V> overrides) {
      Map<K, V> result = new HashMap<K, V>(defaults);
      result.putAll(overrides);
      return result;
  }

ここのタイトル「Map Interface Bulk Operations」の下にあります。

4

2 に答える 2

1

メソッドを使用putAll()して、別のマップの要素をこのマップに追加できます。overridesこの場合、 に既に存在するキーと値のペアをオーバーライドすることを示すために名前が付けられていますdefaults。つまり、デフォルトにキーと値のペア A->B が含まれ、オーバーライドに A->C が含まれる場合、結果のマップには A->C のみが含まれます。

または、デフォルトに A->B が含まれ、オーバーライドに D->E が含まれ、A.equals(D) の場合、結果のマップには A (または両方が等しい場合は D)->E のみが含まれます。

上記の静的メソッドは、 (優先度を持つ)とMap結合してそれを返す new をdefaults返します。overridesそのメソッドに使用されるMap map = new HashMap(defaults); メソッドと組み合わせたコンストラクタputAll

于 2013-01-02T05:41:03.470 に答える
1

デフォルトのキーと値のペアをロードして、選択したサブセットのみ (または選択した場合はすべて) をオーバーライドできると書かれています。

たとえば、ユーザーがキーに指定した値を使用してマップを作成するとします。ユーザーがすべてのキーに値を指定する必要がない、一部またはすべてのキーに安全なデフォルトがあるとします。

したがって、デフォルトでマップを作成すると、呼び出し元はオーバーライドしたいものだけを提供します。この場合、呼び出し元から提供されたキーの値を上書きする必要があります。1 つずつ行う代わりに、上記のメカニズムを使用して、一見 1 回の呼び出しでこれを実現します。

于 2013-01-02T05:41:36.797 に答える