这就是我的情况:
我有一个获取String和一堆其他信息的方法。 根据字符串的内容,我想将其他信息放入我拥有的两个地图中的一个。像这样:
if (string.equals("A")) {
A.put[..]
} else if (string.equals("B")) {
B.put[..]
}
但是由于这种情况在我的方法中发生了几次,我不希望每次因为冗余而使用if / else。
所以我想我需要的是某种对象/指针/引用,我可以在开头分配我想要使用一次的Map,然后将其用作占位符。
答案 0 :(得分:1)
这就是我们有参考变量的原因:
Map<?,?> map;
if(string.equals("A"))
map = A;
else if(string.equals("B"))
map = B;
else
map = new HashMap<>();
工作正常。最后一行更像是对String的错误检查,并且在您的方法完成后将被垃圾收集(否则可能不会初始化map,这将抛出NullPointer)。在此之后,您可以将所有内容放入地图中(感谢参考变量:-))。请记住,地图只是对地图A或B(或“空白”)
的引用答案 1 :(得分:1)
您似乎想要一张地图地图。
Map<String, Map<?, ?>> maps = new HashMap<>();
Map<?, ?> map = map.get(string);
map.put[...];
如果您想根据需要添加地图,可以使用
Map<?, ?> map = map.computeIfAbsent(string, HashMap::new);