Java 如何浏览已分类的地图?

Java 如何浏览已分类的地图?,java,map,Java,Map,我有一张分类地图。其中每个字符串都是一个问题,并附有可能的答案和要点 如何使用此Map打印问题(第一个问题,第二个问题,…),如sampleArray[0]?与普通Map一样,您可以在密钥集上迭代: SortedMap<String, SortedMap<String, Integer>> questions; //some processing for (String question : questions.keySet()) { System.out.p

我有一张分类地图。其中每个字符串都是一个问题,并附有可能的答案和要点


如何使用此
Map
打印问题(第一个问题,第二个问题,…),如
sampleArray[0]

与普通Map一样,您可以在密钥集上迭代:

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

//some processing

for (String question : questions.keySet()) {
    System.out.println(question);
}
分类地图问题;
//一些加工
for(字符串问题:questions.keySet()){
System.out.println(问题);
}

在地图中迭代的一种方法是:

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();
这将获取一个集合,其中包含案例中的所有值或答案。集合有一个toArray()方法,该方法将返回一个普通数组以便于迭代。但是您也可以使用ArrayList的addAll(Collection c)方法来创建ArrayList

List<String> myAnswers = new ArrayList<>();
myAnswers.addAll(myMap.values());
List myAnswers=new ArrayList();
myAnswers.addAll(myMap.values());
顺便说一句,在描述类型时,如果可能的话,例如使用接口/抽象类

Map<String, Map<String, Integer>> test;
Map测试;
不是

SortedMap测试;

为此使用
地图的目的是什么?为什么不直接使用
ArrayList
?你想让你的问题按字典排序吗?@OliCharlesworth这不是我能做到的。这就是我得到的,也是我必须使用的。你可以使用entrySet方法,以升序键的顺序获取条目集。这就是你想要的吗@Saphire您是否阅读了
SortedMap
?的javadoc。我是否可以根据项目的位置从keySet()中选择项目?keySet()返回一个集合。这是一个只有唯一值的列表。您可以调用Set的toArray()方法,从中获取一个普通数组,然后以更熟悉的方式进行迭代。我如何迭代所有可能的答案?我将把它添加到我的答案中。我是否可以将
myMap
作为一个变量,而
0
中只有一个问题?
    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;