您正在尝试访问Hashmap中的MultiValueMap
这是我里面的HashMap projectDetails
HashMap
private HashMap<String, ClassDetails> classDetailsMap = new HashMap<String, ClassDetails>();
在classDetailsMap
中,我有MultiValueMap
称为methodDetailsMap
private MultiMap<String, MethodDetails> methodDetailsMap = new MultiValueMap<String, MethodDetails>();
当我尝试通过
访问methodDetailsMap
时
Set<String> methodNamesSet = projectDetails.getClassDetailsMap().get(cls).getMethodDetailsMap().keySet();
String[] methodNames = methodNamesSet.toArray(new String[0]);
for (int i = 0; i < methodNames.length; i++) {
String methodName = methodNames[i];
System.out.println(cls + " "+methodName);
//codes used to access key values
Collection coll = (Collection) methodNamesSet.get(methodName);
System.out.println(cls + " "+methodNamesSet.get(methodName));
}
我得到一个错误get
,说无法解析方法get(java.lang.String)
有什么方法可以访问MultiValueMap
答案 0 :(得分:3)
它与您的代码的编译错误。 Set中没有get方法。
methodNamesSet.get(methodName)
要获取方法详细信息,请首先遍历该集合,然后如下所示从methodDetailsMap获取方法详细信息。
MultiValueMap<String, MethodDetails> methodDetailsMap = projectDetails.getClassDetailsMap().get(0).getMethodDetailsMap();
Set<String> methodNamesSet = methodDetailsMap.keySet();
for(String str: methodNamesSet) {
System.out.println(methodDetailsMap.get(str));
}
答案 1 :(得分:1)
我阅读了您的代码,据我了解,首先您需要获取cls
类的所有方法名称,然后才能一个一地获取它们。因此,在for循环中,您需要get
中的getMethodDetailsMap()
。这将为您提供帮助:
for (int i = 0; i < methodNames.length; i++) {
String methodName = methodNames[i];
System.out.println(cls + " "+methodName);
//codes used to access key values
Collection coll = projectDetails.getClassDetailsMap().get(cls).getMethodDetailsMap().get(methodName);
System.out.println(cls + " "+methodNamesSet.get(methodName));
}