我有以下代码:
/*
if inputDetailsMap has values like:
String String
key1 value1
key2 value2
key3 value3
key4 value4
key5 value5
so on.....
*/
public void inputData(Map<String,String> inputDetailsMap, String fileName){
//a for loop to run
String value = inputDetailsMap.get("key" + i); // i value comes from the for loop
//i am doing something with the value.
//end of for loop
}
如果我想迭代Map,上面的代码效果很好。 但现在我有类似的东西。
/*
inputDetailsMap has values like:
int String String
1 key1 value1
key2 value2
key3 value3
key4 value4
key5 value5
2 key1 value1
key2 value2
key3 value3
key4 value4
key5 value5
so on.....
*/
public void inputData(Map<Integer,Map<String,String>> inputDetailsMap, String fileName){
//how to iterate and get the value using inputDetailsMap.get() like the above code??
}
我想迭代Map中的Map并获取它的键和值。 我想获取key1,value1,key2,value2,key3,value3等的值。 那我该怎么办呢?
答案 0 :(得分:1)
您可以使用:
String value = inputDetailsMap.get(1).get("key" + i);
首先获得正确的Map<String, String>
(对于键1或2)。
第二次获取将获得正确的值(对于key1,key2 ......)
答案 1 :(得分:0)
public void inputData(Map<Integer,Map<String,String>> inputDetailsMap) {
for (Map.Entry<Integer, Map<String,String> entry : inputDetailsMap.entrySet()) {
Map<String, String>innerMap = entry.getValue()
for (Map.Entry<String, String> keyPair : innerMap.entrySet()) {
String key = keyPair.getKey();
String value = keyPair.getValue();
// do something with value
}
}
}
答案 2 :(得分:0)
你可能会更好地看待像Guava的Multimap:
http://tomjefferys.blogspot.co.uk/2011/09/multimaps-google-guava.html
但不使用它:
import java.util.HashMap;
import java.util.Map;
public class MapInMap {
public static void main(String[] args){
for (Integer index: outerMap.keySet()){
for (String innerIndex: outerMap.get(index).keySet()){
System.out.println(String.format("%s :: %s :: %s", index, innerIndex, outerMap.get(index).get(innerIndex)));
}
}
}
/*
inputDetailsMap has values like:
int String String
1 key1 value1
key2 value2
key3 value3
key4 value4
key5 value5
2 key1 value1
key2 value2
key3 value3
key4 value4
key5 value5
so on.....
*/
static Map<String, String> innerMap1 = new HashMap<String, String>(){{
put("key1", "value1");
put("key2", "value2");
put("key3", "value3");
put("key4", "value4");
put("key5", "value5");
}};
static Map<String, String> innerMap2 = new HashMap<String, String>(){{
put("key1", "value1");
put("key2", "value2");
put("key3", "value3");
put("key4", "value4");
put("key5", "value5");
}};
static Map<Integer, Map<String,String>> outerMap = new HashMap<Integer, Map<String,String>>(){{
put(1, innerMap1);
put(2, innerMap2);
}};
}
答案 3 :(得分:-1)
试试这个
public void inputData(Map<int,Map<String,String>> inputDetailsMap, String fileName){
System.out.println(inputDetailsMap.get(fileName));
}