Java:显式设置hashmap的键并保持对它的引用

时间:2012-12-09 07:30:49

标签: java

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

然后在main

map.put(key, "c");

(假设key是有效的ArrayList)。但是keys之后仍然有0。

如何使keys的关系更强大,以便它实际上与HashMap绑定并包含其所有键。

2 个答案:

答案 0 :(得分:3)

ArrayList的复制构造函数将映射中的所有键复制到ArrayList,但如果在该点之后更改映射,则不会反映该映射。

我可以想到3个选项:

  • 编写自己的嵌入ArrayList的地图实现并使其保持最新
  • 每次更新地图时手动更新ArrayList
  • 根本不使用ArrayList(当你需要访问密钥时keySet()就在那里,所以我不确定为什么你需要一个)

答案 1 :(得分:0)

你不能。

Map.keySet()返回Map的当前密钥集,然后将其加载到列表中。之后对地图的更改不会影响列表的内容。


如果需要,大多数人会重新获得密钥集。你为什么不这样做?