【问题标题】:Storing spreadsheet-type data from a file to a data structure in Java将电子表格类型的数据从文件存储到 Java 中的数据结构中
【发布时间】:2017-10-10 16:30:31
【问题描述】:

我有一个电子表格类型的数据文件(制表符分隔的 .txt),Java 程序需要读取它并将值存储在数据结构中。此数据表示两个城市之间的最短路径,如果路径不存在,则用破折号 (-) 填充。哪种数据结构可以很好地存储这些值,以便在程序中进行进一步比较;主要用于搜索算法?此外,我想在一个简单的 GUI 中将第一列中列出的城市打印为允许用户选择城市的下拉按钮?只有通过提取出来打印城市的代码行才是好的。 而且,数据文件的外观如下:

            Port Col    Minn    Cali    Flo
Portland    -   30  -   22  -
Colorado    15  17  5   -   -
Minnesota   11  15  22  13  -
California  8   -   9   -   -
Florida     11  -   -   22  -

由于这是一个制表符分隔的 .txt 文件,它看起来并不完美。

【问题讨论】:

  • 数据的用途是什么?如果您只是打印它可能最容易将其保留为字符串,但如果您在内部使用它,则数组或列表可能会有所帮助
  • 我会考虑类似Map<String, Map<String, Double>>;您可能希望将其包装在您自己的类中以使其更易于使用。但是,如前所述,这取决于您将如何使用它。
  • @James_D 你能简单介绍一下你的想法吗?
  • “外部”地图的键是城市名称,值是从每个城市到相应距离的地图。所以,例如Map<String, Double> portlandDists = new HashMap<>();portlandDists.put("Colorado", 30.0);portlandDists.put("California", 22);distances.put("Portland", portlandDists)

标签: java swing javafx data-structures file-io


【解决方案1】:

为了阅读文件,我宁愿将其重命名为 .csv 并使用标准 csv 阅读器之一。您通常可以将它们配置为使用其他分隔符,包括制表符。 这将在内存中为您提供一些类似电子表格的结构。您将能够获得标题(城市)列表和地图式结构以及每个城市的距离。

这种方法编码更少,阅读更多,但这是真正的工作通常最终的样子,所以如果你能处理它,这是一个很好的做法。

CSV 库示例:

https://commons.apache.org/proper/commons-csv/

http://opencsv.sourceforge.net/

【讨论】:

  • 无需重命名任何东西...与文件扩展名无关的是存储格式...
  • 你是对的。大多数库都不关心扩展。我只是想明确一点,我想将该文件视为类似 csv 的数据格式。
猜你喜欢
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多