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
是一个有效的数组列表)。但在那之后keys
仍然有 0 号。
我怎样才能使keys
的关系更强大,以便它实际上与哈希图绑定并包含其所有键。
ArrayList
的复制构造函数将映射中的所有键复制到 ArrayList,但如果在此之后更改映射,则不会反映它。
我可以想到3个选项:
- 编写您自己的映射实现,嵌入 ArrayList 并使其保持最新
- 每次更新地图时手动更新数组列表
- 根本不要使用 ArrayList(当您需要访问密钥时
keySet()
在那里,所以我不确定您为什么需要一个)
你不能。
Map.keySet()
返回映射的当前键集,然后将其加载到列表中。之后对地图的更改不会影响列表的内容。
如果需要,大多数人只会重新获取密钥集。你为什么不这样做呢?