我有一個嵌套的樹形圖,需要檢查每一個內部地圖,如果它具有一定的關鍵。例如:每個循環嵌套的樹狀圖
TreeMap<String,TreeMap<String,Integer>> map
for each loop {
//check if the inner map has the key in it
}
我該如何格式化for-each循環? 謝謝!
我有一個嵌套的樹形圖,需要檢查每一個內部地圖,如果它具有一定的關鍵。例如:每個循環嵌套的樹狀圖
TreeMap<String,TreeMap<String,Integer>> map
for each loop {
//check if the inner map has the key in it
}
我該如何格式化for-each循環? 謝謝!
可以遍歷兩個嵌套的地圖有兩個嵌套「的foreach」循環,像這樣:
for (Map.Entry<String,TreeMap<String,Integer>> entry1 : map.entrySet()) {
Map<String,Integer> innerMap = entry1.getValue();
if (innerMap.containsKey("my-key")) {
System.out.println("Map at key "+entry1.getKey()+" contains 'my-key'");
}
}
您可以使用地圖的entrySet()
通過條目在地圖迭代如下:
for (Map.Entry<String, TreeMap<String, Integer>> entry : map.entrySet())
{
if (entry.getValue().containsKey(key)) {
return entry.getValue().get(key);
}
}
或者你可以使用values()
收集的地圖通過條目進行迭代:
for (TreeMap<String, Integer> value : map.values())
{
if (value.containsKey(key)) {
return value().get(key);
}
}
從外部映射獲取值,迭代每個內部的元素。中的每個元素,這是一個TreeMap<String,Integer>
,使用containsKey
以檢查地圖元素包含所需的鍵。
TreeMap<String,TreeMap<String,Integer>> map =
new TreeMap<String, TreeMap<String,Integer>>();
for(TreeMap<String,Integer> mapElement: map.values()) {
//check if the inner map has the key in it
if(mapElement.containsKey("searchKey")){
System.out.println("Match key found in this map element");
}
}
或者,你可以使用番石榴TreeBasedTable,有很多方便的方法來處理您的嵌套的數據結構。
TreeBasedTable<String, String, Integer> tb = TreeBasedTable.create();
tb.put("rowA", "colA", 1);
tb.put("rowB", "colB", 2);
tb.containsRow("rowA");
...
他想檢查內部映射,而不是迭代它。 – Brian
@布賴恩啊,你是對的,我編輯瞭解決這個問題的答案。 – dasblinkenlight
很酷,謝謝+1 – Brian