MultiValueMap获取值

时间:2019-05-19 19:51:45

标签: java spring apache hashmap

您正在尝试访问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

2 个答案:

答案 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));
        }