2013-03-31 13 views
1

我正在嘗試從文件中讀取以創建HashMap<String, HashMap<String, Integer>>嘗試從文件讀取數據後創建HashMap。獲得空值。我究竟做錯了什麼?

的INPUTFILE是以下格式:

A B C D 
1 -1 2 -3 
2 3 -5 3 
-3 2 7 -5 
4 3 1 1 

該輸入文件代表所有對點之間的距離。這意味着,它代表下面的矩陣:

 A B C D 
A 1 -1 2 -3 
B 2 3 -5 3 
C -3 2 7 -5 
D 4 3 1 1 

在創建地圖,當我打印的鍵和值,正確的值被打印。但是當我完全填充地圖後嘗試打印地圖時,它只能正確打印外部地圖的關鍵點。其他一切打印爲null

我在做什麼錯?

public static HashMap<String, HashMap<String, Integer>> initMap() { 
    HashMap<String, HashMap<String, Integer>> distancesMap = new HashMap<String, HashMap<String, Integer>>(); 
    final String distancesFileName = "/home/name/workspace/Tester/src/main/distances.txt"; 
    String distancesFile = Main.readInputFile(distancesFileName); 
    String[] distancesFileArray = distancesFile.split("\n"); 
    String[] firstLine = distancesFileArray[0].split("\t"); 
    for(int iii = 1; iii < distancesFileArray.length; iii++) { 
     HashMap<String, Integer> tempMap = new HashMap<String, Integer>(); 
     String[] singleLineArray = distancesFileArray[iii].split("\t"); 
     for(int jjj = 0; jjj < singleLineArray.length; jjj++) { 
      tempMap.put(firstLine[jjj], Integer.parseInt(singleLineArray[jjj])); 
      // the following print statement (commented out) prints the correct values 
      // System.out.println(firstLine[jjj] + " " + tempMap.get(firstLine[jjj])); 

     } 
     distancesMap.put(firstLine[iii - 1], tempMap); 
    } 
    /* 
    * The following lines just print the key of the outer map correctly 
    * but everything else is printed as null 
    */ 
    for(String key : distancesMap.keySet()) { 
     System.out.print(key + "\t"); // prints the correct String value 
     HashMap<String, Integer> tempMap = distancesMap.get(key); 
     for(String innerKey : tempMap.keySet()) { 
      // the following line only prints null values 
      System.out.print(tempMap.get(innerKey + "\t")); 
     } 
     System.out.println(); 
    } 
    return distancesMap; 
} 

輸出我從這個得到的是這樣的:

B nullnullnullnull 
C nullnullnullnull 
D nullnullnullnull 
A nullnullnullnull 
+0

假如你命名你的地圖,更具體的東西,你不會已經遇到了這個問題:-) – karmanaut

+0

@ Bonz0:你一個通過代碼掃描了一個有效的問題。你應該沒問題。如果它適合你,請接受答案。 (你可以刪除這個問題,如果你真的不想再次提及它) – Jayan

回答

3

變化

System.out.print (tempMap.get (innerKey + "\t")); 

System.out.print (tempMap.get (innerKey) + "\t"); 
+0

我......我的天啊... **編輯:**我不敢相信我花了90分鐘試圖找出我是什麼做錯了。 – Bonz0