0
public static HashMap<ArrayList<Integer>, String> map = new HashMap<ArrayList<Integer>, String>();  
public static ArrayList<ArrayList<Integer>> keys = new ArrayList<>(map.keySet());

Then in main

map.put(key, "c");

(assume key is a valid ArrayList). But keys still has size 0 after that.

How can I make the relationship of keys stronger so that it will be actually tied to the HashMap and contain all its keys.

4

2 に答える 2

3

ArrayList のコピー コンストラクターは、マップ内のすべてのキーを ArrayList にコピーしますが、それ以降にマップを変更しても反映されません。

私は3つのオプションを考えることができます:

  • ArrayList を埋め込んで最新の状態に保つ独自のマップ実装を作成する
  • マップを更新するたびに ArrayList を手動で更新する
  • ArrayList をまったく使用しないでください (keySet()キーにアクセスする必要があるときにそこにあるので、なぜ必要なのかわかりません)
于 2012-12-09T07:33:38.640 に答える
0

できません。

Map.keySet()Map の現在のキー セットを返します。これをリストにロードします。それ以降のマップへの変更は、リストの内容には影響しません。


ほとんどの人は、必要に応じてキー セットを再取得します。なぜあなたはそれをしないのですか?

于 2012-12-09T07:33:39.170 に答える