2017-12-18 4 views
0
void otherfunc() { 
    Map<Key, Value> map = new MyMap<>(); 
    myfunc(map); 
} 

void myfunc(Map<Key, Value> map) { 
    Key k = someKey; 
    Value v = someValue; 
    map.put(k, v); 
} 

MyMapはこれらの参照をkおよびvに保つ必要がありますか?マップ実装の契約(またはそれに関係なく)は、キーまたは値の参照を格納する必要があります

+0

いいえ、map.get()関数を使用していつでも取得できます。 – clinomaniac

+0

したがって、呼び出し側は、putとマップがまだ参照されているために、GCがkとvを収集しないという前提はできません。 –

+0

* Java *が必要です。おそらくそれが動作する可能性のある他の方法はありません。 – EJP

答えて

0

HashMapには、putというキーと値が格納されます。 keySet()を使用すると、すべてのキーのセットを取得できます。

team1.put("foo", 1); 
team1.put("bar", 2); 

は、キー"bar"でキー"foo"21を格納します。すべてのキーを反復処理するには、次の

for (String key : team1.keySet()) { 
    System.out.println(key); 
} 

"foo""bar"を印刷します。

for (String key : team1.keySet()) { 
    System.out.println(team1.get(key)); 
} 

12を印刷します。 Mapインタフェースについて

0

何もあなたputが任意の将来の時点で、一般的にgetに利用できる(またはvaluesなどのリストにある)であるK-Vマッピングをアサートしません。たとえば、有効なMapである内部リーパースレッドで期限切れのキャッシュを実装することができます。 (javadocされたJDK自身のWeakHashMapもそのように振る舞いますが、このような動作は「驚くべきですが無効です」)

関連する問題