【问题标题】:Import from txt file to HashSet从txt文件导入HashSet
【发布时间】:2015-03-23 03:11:09
【问题描述】:

我一直在开发一个程序,该程序允许我将数据从 HashSet 导出到文本文件中,如 here 所示,然后在一个新类中将该文本文件导入 HashSet。

我已经设置好了,所以当我写入 txt 文件时,它会像这样保存:

不幸的是,我不确定如何导入它以便正确存储在 HashSet 中。 有人能帮我指出正确的方向吗?我知道我需要导入 FileReader,但除此之外我一无所知。

【问题讨论】:

  • 不要因为无法嵌入图像而感到抱歉——嵌入文本。
  • 你有什么问题?如何读取文本文件?如何解析文件中的一行?
  • @jangroth 对于初学者来说如何设置文件阅读器来调用txt文件来填充HashSet(现在我想起来了,这是几个问题)

标签: java filereader hashset


【解决方案1】:
HashSet<ComputerScientist> computerScientistSet = new HashSet<>();
try (Scanner sc = new Scanner(new File(filepath))){
    while (sc.hasNextLine()) {
        String[] line = sc.nextLine().split(" , ");
        computerScientistSet.add(new ComputerScientist(line[0], line[1]));
    }
}

写得很快,没有经过测试,但它应该给你一个想法。 (假设我理解你的问题)。我希望您不会被使用 Scanner 而不是 FileReader 所困扰。

【讨论】:

  • 根据您提供的代码,我不需要使用 FileReader 吗?如果他们都做同样的事情,真的会有区别吗?
  • Scanner 比 FileReader 更容易使用(例如逐行读取的选项)。此处扫描仪的一个很好的替代品是 BufferedReader,但只要您不是多线程,两者都可以正常工作。
  • 说到逐行阅读,当我运行该方法时,你有 line[0], line[1] 的部分给了我以下错误:java.lang.ArrayIndexOutOfBoundsException: 1
  • 可能是由文件末尾的空行引起的。 “ , ”之后的所有内容都填充在第 [1] 行中。如果没有“ , ”,这将给出错误。删除白线,或者在添加之前检查数组线的长度是否等于 2。正如你所问的,我只是在为你指出“正确的方向”。
  • 我很感谢你。 (大部分)自己弄清楚东西是唯一真正的学习方式。我能够让它成功运行,但是 HashSet 不保存信息。然后我包含了一个返回 HashSet 大小的方法,它返回为 0。我应该用我班级的代码更新问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
  • 2017-09-30
  • 1970-01-01
相关资源
最近更新 更多