Java:根据变量访问正确的映射,而不使用";如果;

Java:根据变量访问正确的映射,而不使用";如果;,java,Java,这就是我的情况: 我有一个方法,可以获取一个字符串和一堆其他信息。 根据字符串的内容,我想将其他信息放入我拥有的两个映射之一。像这样: if (string.equals("A")) { A.put[..] } else if (string.equals("B")) { B.put[..] } 但是,由于这种情况在我的方法中发生过几次,我不想每次都使用if/else,因为存在冗余 所以我想我需要的是某种对象/指针/参考,我可以在开始时指定我想要使用的地图一次,然后将其用作占位符 这就

这就是我的情况:

我有一个方法,可以获取一个字符串和一堆其他信息。 根据字符串的内容,我想将其他信息放入我拥有的两个映射之一。像这样:

if (string.equals("A")) {
  A.put[..]
} else if (string.equals("B")) {
  B.put[..]
}
但是,由于这种情况在我的方法中发生过几次,我不想每次都使用if/else,因为存在冗余


所以我想我需要的是某种对象/指针/参考,我可以在开始时指定我想要使用的地图一次,然后将其用作占位符

这就是为什么我们有参考变量:

Map<?,?> map;
if(string.equals("A"))
    map = A;
else if(string.equals("B"))
    map = B;
else
    map = new HashMap<>();
Map;
if(string.equals(“A”))
map=A;
else if(string.equals(“B”))
map=B;
其他的
map=新的HashMap();

很好。最后一行更像是字符串的错误检查,在方法完成后将被垃圾收集(否则可能不会初始化映射,这将抛出一个空指针)。在此之后,您可以将所有内容放入映射(感谢引用变量:-))。请记住,映射只是对映射a或映射B(或“void”)的引用。

这就是为什么我们有引用变量:

Map<?,?> map;
if(string.equals("A"))
    map = A;
else if(string.equals("B"))
    map = B;
else
    map = new HashMap<>();
Map;
if(string.equals(“A”))
map=A;
else if(string.equals(“B”))
map=B;
其他的
map=新的HashMap();

很好。最后一行更像是字符串的错误检查,在方法完成后将被垃圾收集(否则可能不会初始化映射,这将抛出一个空指针)。在此之后,您可以将所有内容放入映射(感谢引用变量:-))。请记住,地图只是对地图a或B(或“void”)的引用。

似乎您需要地图地图

Map<String, Map<?, ?>> maps = new HashMap<>();

Map<?, ?> map = map.get(string);
map.put[...];
Map-Map=Map.get(字符串);
地图.放置[…];
如果要根据需要添加地图,可以使用

Map<?, ?> map = map.computeIfAbsent(string, HashMap::new);
Map Map=Map.computeIfAbsent(字符串,HashMap::new);

看来您需要一张地图

Map<String, Map<?, ?>> maps = new HashMap<>();

Map<?, ?> map = map.get(string);
map.put[...];
Map-Map=Map.get(字符串);
地图.放置[…];
如果要根据需要添加地图,可以使用

Map<?, ?> map = map.computeIfAbsent(string, HashMap::new);
Map Map=Map.computeIfAbsent(字符串,HashMap::new);

所以。。。您想要一个条件语句,而不是实际的条件语句。。。。如果这种情况只发生几次,你最好保持原样。@Stultuske我想要更少的条件语句,而不是一个。我是用ctsts回答的,所以。。。您想要一个条件语句,而不是实际的条件语句。。。。如果这种情况只发生几次,你最好保持原样。@Stultuske我想要更少的条件语句,而不是一个。这是我用ctsts答案实现的。哇,我用Java写东西已经三年了,但我不知道这一点。我真丢脸。谢谢哇,我用Java写东西已经三年了,但我不知道。我真丢脸。谢谢