簡體   English   中英

嘗試從文件中讀取數據后創建HashMap。 獲取空值。 我究竟做錯了什么?

[英]Trying to create a HashMap after reading data from file. Getting null values. What am I doing wrong?

我試圖從文件中讀取以創建HashMap<String, HashMap<String, Integer>>

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

更改

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM