2013-12-08 83 views
2

所以我有這個二進制樹映射(稱爲「mainMap」),其中包含字符串作爲其鍵,每個鍵都有一個內部映射作爲它的值對。地圖中的這個映射包含字符串鍵和整數值。在Java中遍歷/打印二叉樹映射

這個mainMap的目的是告訴哪個單詞對應哪個文件及其頻率。 例如:如果「貓」是「Arnold.txt」 14次,這是在「Jake.txt」 6個時代,地圖將舉行

關鍵....貓
值...地圖[ key ... Arnold.txt,value ... 14], [key .... Jake.txt,value ... 6]

這是沒有問題的。我的問題是穿越和打印出地圖。我想

- 獲得在地圖
1)每個鍵訪問地圖
2)內的電流鍵打印出該密鑰
3)檢索值(地圖)
.... .....對於值圖中的每個鍵
..................... a)打印出鍵
............. b)打印出來的值
4)跳過一行,轉到下一個鍵,重複步驟1-4

我在想我可以使用itera TOR。但是,對於我的尷尬,我不知道如何使用我的代碼去了解語法。 (我不使用內置的TreeMap的公用事業Java的。我使用的是程序員構造的數據結構。

我有二進制樹圖碼

public Iterator< KeyValuePair<K, E> > iterator() 
{ 
    Iterator< KeyValuePair<K, E> > itr = new MyTreeItr(); 
    return itr; 
} 

public Iterator< KeyValuePair<K, E> > breadthFirstIterator() 
{ 
    Iterator< KeyValuePair<K, E> > itr = new MyBreadthFirstItr(); 
    return itr; 
} 

我希望這是足夠的信息中下面的方法。這打印輸出用於測試目的,以確保我的地圖正確地收集數據。

+0

你能給我們你的樹的代碼嗎?我們需要知道它是如何實現來回答這個問題的。 – bcorso

+0

當然!你的意思是我使用BinaryTreeMap類的方法創建mainMap樹或代碼的代碼(或兩者兼有嗎?) – user2803214

+0

通常,二叉樹具有對根節點的引用,並且每個節點都具有對左右節點的引用。但是,您將結構描述爲地圖(左/右沒有意義),所以我很困惑您如何使用地圖來實現二叉樹。 – bcorso

回答

0

我不確定你的樹的結構如何,但根據你如何描述你的數據結構(Map<String, Map<String, Integer>>),你可以嘗試這個:

public void printAll(Map<String, Map<String, Integer>> map){ 
    for(Map.Entry<String, Map<String,Integer>> entry : map.entrySet()){ 
     System.out.println(entry.getKey()); 
     for(Map.Entry<String, Integer> innerEntry : entry.getValue().entrySet()){ 
      System.out.println(innerEntry.getKey()); 
      System.out.println(innerEntry.getValue()); 
     } 
     System.out.println(""); 
    } 
}