4

私は

private Map<String,List<ProductScheme>> discountMap = new HashMap<String,List<ProductScheme>>();

リストを取得してリストdiscountMapにアイテムを追加した場合、リストを再度追加する必要がありますか、discount mapそれとも必須ではありませんか?

4

4 に答える 4

11

いいえ、必須ではありません。getマップに保存されているリストへの参照を返します。したがって、get(add、remove ...)で取得したリストで行った変更は、同じオブジェクトであるため、マップのリストにも反映されます。

于 2012-08-08T10:48:01.860 に答える
9

以前にリストがなかった場合にのみ、リストを追加する必要があります。私が使用するパターンは

List<ProductScheme> list = discountMap.get(key);
if (list == null)
    discountMap.put(key, list = new ArrayList<>());
list.add(value);
于 2012-08-08T10:49:56.313 に答える
0

マップからリストへのオブジェクト参照を取得するだけなので、マップに再度配置する必要はありません。

List someList = discountMap.get("firstList");

は同じリストであり、オブジェクトへのポインタを格納する別の変数です。

于 2012-08-08T10:52:57.267 に答える
0

いいえ。変更されたオブジェクトをdiscountMap変数に再度追加する必要はありません。マップからgetメソッドを呼び出すと、その特定のオブジェクトの参照(オブジェクトアドレス)のみが返され、マップ内にあるこのオブジェクトを変更します(実際には、マップ内でも、オブジェクト参照があります。同じように上記のオブジェクト参照を使用して、両方の場所からそのメモリ位置を使用して参照しているオブジェクト。

これは、参照を使用してオブジェクトを参照しているすべての状況に共通です。

1つの便利なリンク

于 2012-08-08T13:03:36.087 に答える