【问题标题】:How to handle large amounts of data?如何处理大量数据?
【发布时间】:2013-12-24 00:36:22
【问题描述】:

我有一个学校项目,我获得了 103MB 的数据(安大略省的水流质量结果),相当于 200 000+ 行数据。我需要能够接收数据并从中创建视觉效果(例如,安大略省的地图,其中的点表示 X 化学品在 20XX 年的发现地点)。

我尝试过一次或多或少地一次接收我的计算机显然无法处理的所有内容。我想知道是否有策略或功能可以帮助我解决这个问题。

我希望在获取数据后将信息保存在 2D ArrayList 中。


示例

数组名称:rawData

[0]、[1]、[2]

2002 年、2003 年、2004 年

站号,站号,站号

化学。找到了,化学找到了,化学找到了

等等

如果这是一种存储数据的低效方式,那么更好的方式是什么?


任何帮助将不胜感激。

旁注:数据已提供给我超过 10 多个文件。此外,文件扩展名是 .csv,因此每一行都用逗号分隔(例如 [年份、发现的化学物质、浓度百分比> 等])

【问题讨论】:

  • 查看 Microsoft Excel 中的数据。
  • @RichardChambers 开个玩笑
  • 将您的数据导入 mysql 数据库。这将使您可以轻松地操作数据,而无需将其全部加载到内存中或解析速度较慢的文件。 Java 对使用 mysql 数据库有很好的支持:dev.mysql.com/downloads/connector/j
  • @RichardChambers 经常有人问某项技术的问题是因为他需要使用它。很明显,这是学校的练习,因此改变技术不是一种选择。是的,excel 共享点和访问确实允许人们做非常好的事情,但大多数时候都是在一个不可靠的、不可维护的和一击中。但这只是我的意见。

标签: java performance large-data


【解决方案1】:

您可以使用 ArrayLists。使用您需要存储在对象中的值创建一个类。

例如:

class Data{
  String Year;
  String found;
  ---one property for each of the value you need--
}

然后您可以填充此类的对象并将它们添加到 arrayList。

【讨论】:

  • 如果这有简短的几句话解释如何使用 BufferReader 将详细信息拉到新的 Data 对象构造函数中,那将是完美的。
  • @RudiKershaw 我猜他在尝试将其放入数组时已经弄清楚了
【解决方案2】:

除了 Ardash 的回答之外,您可能还需要分块读取数据。如果您使用 BufferedReader,您可以逐行读取 CSV 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 2017-02-09
    • 2013-04-09
    • 2014-06-12
    • 2018-03-30
    • 2015-02-24
    相关资源
    最近更新 更多