【问题标题】:Reading a text file to a HashMap in Java将文本文件读取到 Java 中的 HashMap
【发布时间】:2015-05-06 15:28:54
【问题描述】:

我有一个格式如下的文本文件:

Student1 Marks
Student2 Marks

第一列是关键。

这是我迄今为止尝试过的

Scanner scanner = new Scanner(new FileReader("marks.txt"));

    HashMap<String,Integer> map = new HashMap<String,Integer>();

    while (scanner.hasNextLine()) {
        String[] columns = scanner.nextLine().split("\t");

        map.put(columns[0],columns[1]);
    }

    System.out.println(map);        


}

【问题讨论】:

  • 您的问题是什么?怎么把地图打印回来?
  • 看起来如果你只在 " " 而不是 "\t" 上分割它应该可以工作
  • 另外,当它应该是 Integer 时,您正在输入 String
  • @ControlAltDel:由于split 采用正则表达式,所以我认为\s+ 会更好。
  • 或者更好,用 "\\s" 分割

标签: java hashmap


【解决方案1】:

只要确保解析标记并且值确实是制表符分隔的,否则代码立即为我工作

    Scanner scanner = new Scanner(new FileReader("marks.txt"));

    HashMap<String,Integer> map = new HashMap<String,Integer>();

    while (scanner.hasNextLine()) {
        String[] columns = scanner.nextLine().split("\t");

        map.put(columns[0],Integer.parseInt(columns[1]));
    }

    System.out.println(map);        

【讨论】:

  • 或者 juts 做split("\\s+"),它会被任意数量的空格分割。
  • 它给了我一个错误:** HashMap 类型中的 put(String, Integer) 方法不适用于参数 (String, String)**
  • @user3402248 这是我运行您的代码时遇到的错误。只需在 map.put() 的第二个参数上使用 Integer.parseInt 即可修复错误
  • @Vasco Lameiras 谢谢!!成功了。
【解决方案2】:

(在 cmets 的帮助下)您的代码应该已经读入 HashMap,所以我认为您的问题是在读入 HashMap 后打印它。

System.out.println(map) 只为您提供地图对象的表示。 我建议阅读以下内容: Convert HashMap.toString() back to HashMap in Java

要打印 HasMap 的所有元素,您可以对其进行迭代,如下所示:Iterate through a HashMap

【讨论】:

    猜你喜欢
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 2018-05-02
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多