首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正在尝试在从文件中读取数据后创建HashMap。正在获取空值。我做错了什么?

正在尝试在从文件中读取数据后创建HashMap。正在获取空值。我做错了什么?
EN

Stack Overflow用户
提问于 2013-03-31 14:46:48
回答 1查看 598关注 0票数 1

我正在尝试从文件中读取以创建HashMap<String, HashMap<String, Integer>>

inputFile的格式如下:

代码语言:javascript
运行
复制
 A    B    C    D
 1   -1    2   -3
 2    3   -5    3
-3    2    7   -5
 4    3    1    1

此输入文件表示所有点对之间的距离。这意味着,它表示以下矩阵:

代码语言:javascript
运行
复制
     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

我做错了什么?

代码语言:javascript
运行
复制
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;
}

我从这里得到的输出如下:

代码语言:javascript
运行
复制
B    nullnullnullnull
C    nullnullnullnull
D    nullnullnullnull
A    nullnullnullnull
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-31 14:50:04

变化

代码语言:javascript
运行
复制
System.out.print (tempMap.get (innerKey + "\t"));

代码语言:javascript
运行
复制
System.out.print (tempMap.get (innerKey) + "\t");
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15727102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档