如何浏览SortedMap?

时间:2014-05-25 17:50:34

标签: java map

我有SortedMap<String, SortedMap<String, Integer>>。其中每个字符串都是一个可能的答案和附加点的问题。

如何使用此Map按照sampleArray[0]这样的位置打印问题(第一个,第二个......)?

3 个答案:

答案 0 :(得分:2)

您可以迭代地图的一种方法是:

for (String aQuestion : myMap.keySet()) {
    System.out.println(aQuestion)); //Prints each question.  
    System.out.println(myMap.get(aQuestion)); //Prints each answer using the same for loop
}

或者,您可以选择获得答案:

myMap.values();

这会获得包含所有值的集合,或者您的案例中的答案。 Collection有一个方法toArray(),它将返回一个普通的数组以便于迭代。但是你也可以使用ArrayList的addAll(Collection c)方法制作一个arraylist。

List<String> myAnswers = new ArrayList<>();
myAnswers.addAll(myMap.values());

答案 1 :(得分:2)

    for (Entry<String, SortedMap<String, Integer>> q : test.entrySet()) {
        System.out.println("Question=" + q.getKey());
        for (Entry<String, Integer> a : q.getValue().entrySet()) {
            System.out.println("Answer: " + a.getKey() + " for points " + a.getValue());

        }
    }

或者如果你使用的是java 8

    test.entrySet().stream().forEach((q) -> {
        System.out.println("Question=" + q.getKey());
        q.getValue().entrySet().stream().forEach((a) -> {
            System.out.println("Answer: " + a.getKey() + " for points " + a.getValue());
        });
    });

顺便说一下,当你描述类型时,如果可能的话,使用接口/抽象类,例如

Map<String, Map<String, Integer>> test;

SortedMap<String, SortedMap<String, Integer>> test;

答案 2 :(得分:1)

就像通常的地图一样,你可以遍历按键集:

SortedMap<String, SortedMap<String, Integer>> questions;

//some processing

for (String question : questions.keySet()) {
    System.out.println(question);
}