我有SortedMap<String, SortedMap<String, Integer>>
。其中每个字符串都是一个可能的答案和附加点的问题。
如何使用此Map
按照sampleArray[0]
这样的位置打印问题(第一个,第二个......)?
答案 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);
}