我正在寻找创建一个方法,该方法将接受String
作为参数,然后打印出String
相应的HashMap
也指。
sensorMappings = new HashMap<>();
sensorMappings.put(136, "doorNumber");
这是我打印HashMap
的方法:
void printHashMap(String mapChoice){
for (Integer ID : mapChoice.keySet()) {
String key = ID.toString();
String value = sensorMappings.get(ID);
System.out.println(key + " " + value);
}
}
我收到错误:
Can't resolve method 'keySet()'
编辑 - 完整代码:
主类
sensorInfo.printHashMap("mapChoice");
传感器类
public class Sensors {
private HashMap<Integer, String> sensorMappings;
Sensors(){
sensorMappings = new HashMap<>();
sensorMappings.put(136, "doorNumber");
}
void printHashMap(String mapChoice){
for (Integer ID : mapChoice.keySet()) {
String key = ID.toString();
String value = sensorMappings.get(ID);
System.out.println(key + " " + value);
}
}
我有多个 HashMap,并希望创建一个通用方法来通过传入所需的 HashMap 来打印它们。
最佳答案
如果您将所有各种 hashMap 注册到另一个按名称键入的变量中,则可以实现此目的。然后您可以查找您已注册的任何 HashMap 。
下面是一个示例。
public class MapRegistry {
static Map<String,HashMap<Integer,String>> allMaps = new HashMap<>();
public static void register(String name, HashMap<Integer,String> myMap) {
allMaps.put(name, myMap);
}
public static HashMap<Integer,String> find(String name) {
return allMaps.get(name);
}
}
在您的传感器类中
Sensors(){
sensorMappings = new HashMap<>();
MapRegistry.register("sensorMappings", sensorMappings);
sensorMappings.put(136, "doorNumber");
}
然后查找特定 map :
void printHashMap(String mapChoice){
HashMap<Integer,String> map = MapRegistry.find(mapChoice);
for (Integer ID : map.keySet()) {
String key = ID.toString();
String value = map.get(ID);
System.out.println(key + " " + value);
}
}
如果您准备传递注册表或可以注入(inject)它,则不需要静态类。
如果您删除了 map ,则需要注意,因为注册表将保留它们。因此,您需要确保注册表也已更新,否则会出现泄漏。
关于Java HashMap - variable.getKey - 通用打印方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41590060/