在我的代碼,我有一個從地圖獲取地圖的價值
Map<String,Map<String,customObject>>
我不知道如何遍歷這個地圖,並從中獲得價值。 我想在這裏做的是通過將外鍵傳遞給外部地圖來獲得封閉的地圖。 當我得到封閉的地圖,我需要迭代它,並從中獲取密鑰和值。 你可以讓我知道我可以做到這一點,因爲我有點卡在這裏。 任何相似類型的示例或代碼都可以幫助您更好地理解它。
感謝 Vikeng21
在我的代碼,我有一個從地圖獲取地圖的價值
Map<String,Map<String,customObject>>
我不知道如何遍歷這個地圖,並從中獲得價值。 我想在這裏做的是通過將外鍵傳遞給外部地圖來獲得封閉的地圖。 當我得到封閉的地圖,我需要迭代它,並從中獲取密鑰和值。 你可以讓我知道我可以做到這一點,因爲我有點卡在這裏。 任何相似類型的示例或代碼都可以幫助您更好地理解它。
感謝 Vikeng21
遍歷HashMap中的條目......
for (Map.Entry<String, Map<String, Object>> ent : hashmap.entrySet())
{
//ent.getKey(); is the key [String]
//ent.getValue(); is the value [Map<String, Object>]
}
現在從那裏工作了,它基本上是相同的。
我不知道如何遍歷這個地圖,並從中獲得價值
你會遍歷地圖的價值觀就像任何地圖 - 見下使用這種結構的例子。
Map<String, CustomObject> innerMap = new HashMap<String, CustomObject>();
innerMap.put("abc", new CustomObject());
Map<String, Map<String, CustomObject>> externalMap = new HashMap<String, Map<String, CustomObject>>();
externalMap.put("map1", innerMap);
//iterate over all the maps contained in externalMap
for (Map<String, CustomObject> inner : externalMap.values()) {
System.out.println(inner);
}
如果您還需要訪問鍵,可以遍歷條目集:
for (Entry<String, Map<String, CustomObject>> e : externalMap.entrySet()) {
System.out.println(e.getKey()); //map1
System.out.println(e.getValue()); //innerMap
}
您可以使用條目集兩個地圖。是這樣的:
Map<String,Map<String,String>> map1 = ...
Set<Entry<String,Map<String,customObject>>> entrySet1 = map1.entrySet();
for (Entry<String, Map<String, customObject>> entry1 : entrySet1) {
Map<String,String> map2 = entry1.getValue();
Set<Entry<String, customObject>> entrySet2 = map2.entrySet();
for (Entry<String, customObject> entry2 : entrySet2) {
System.out.println(entry1.getKey() +" -> "+entry2.getKey()+" -> "+entry2.getValue());
}
}
我覺得這個例子會給你的答案....
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class MapInMap {
public static void main(String[] args) {
Map<String, MyObj> innerMap01 = new HashMap<String, MyObj>();
Map<String, MyObj> innerMap02 = new HashMap<String, MyObj>();
innerMap01.put("OneOne", new MyObj());
innerMap02.put("TwoOne", new MyObj());
Map<String, Map<String, MyObj>> maps = new HashMap<String, Map<String, MyObj>>();
maps.put("One", innerMap01);
maps.put("Two", innerMap02);
for (Entry<String, Map<String, MyObj>> map : maps.entrySet()) {
for (Entry<String, MyObj> innerObject : map.getValue().entrySet()) {
// your logic
}
}
}
}
class MyObj {
int i;
}
map.getKey()和map.getValue()可以在檢索Entry之後使用 –
謝謝你們。我喜歡iccthedral的solution.its較少的代碼,並有我想要的。但提供的其他解決方案也非常棒。你們在這裏創造奇蹟。再次感謝 – vikeng21