什么是将大量数据传递给java函数的有效方法?

时间:2014-06-25 06:24:29

标签: java methods parameter-passing

我有一个java函数,对大量数据进行操作可能是500MB。我必须将这500MB的数据传递给java函数,并在处理完java函数后返回数据。

我的表格形式如下

col1  col2 col3 col4 col5 col6
 3     5    2     5    1   6
 7     5    6     8    3   8
 5     3    7     9    8   1

我心里想的很少,但不确切知道哪一个是有效的,以及如何实现我需要的java api。

  1. 将数据转换为java对象(每一行具有相同类的一个对象)。然后将对象作为数组传递给java函数。
  2. 从表格数据中准备XML文档,并将XML文档传递给java函数。 java函数内部从XML文档中提取对象。
  3. 将表格数据保存到文件中,并将该文件作为参数输入到java函数中。
  4. 我想到的这些想法,如果有人可以提供上述3种方法的利弊,或者提出一些新的方法,我将不胜感激。

4 个答案:

答案 0 :(得分:1)

传递一个数组只会传递一个不涉及任何数据复制的引用,因此尽可能高效。对数组的任何修改都将在引用的数组上完成。什么都不需要退货。

答案 1 :(得分:1)

如果您正在从文件或流中读取数据,则可以将文件映射到内存中。所以它不会读取整个文件。查看here

答案 2 :(得分:1)

由于您有表格格式的大量数据,您是否考虑过使用Java DB(数据库)?这取决于你要做什么样的处理,你需要多长时间开发以及你已经知道数据库/ SQL的程度,但听起来你要逐行读取数据和数据库这是一个很好的方法 - 特别是对于大量数据。

Java Trail上有关于JDBC API的信息,以及如何使用它的步骤:http://docs.oracle.com/javase/tutorial/jdbc/overview/index.html

来自Java Trail:

  

JDBC API是一种Java API,可以访问任何类型的表格数据,尤其是存储在关系数据库中的数据。

要记住的一些事情:

  • 您必须了解/学习SQL或其他查询语言。
  • 您必须设计数据库的结构并构建它,尽管您可能使用与XML文件中规划的结构类似的结构。
  • KEYS!键是数据库中每行的唯一标识符,如ID号。我强烈建议您添加一个单独的字段/列作为键,特别是如果您是数据库的新手。它们会少量增加数据库的内存开销,但作为回报,您不必担心识别唯一的行,并且可以快速返回到您已经搜索过的行。
  • 您可以选择引入哪些数据 - 不要带来超出您需要的数据。

答案 3 :(得分:0)

如果您正在考虑通过Java函数/方法处理数据,请考虑一次处理要处理的数据块。您可以根据一些计算(例如从10 KB开始)查看Chunk的大小,并查看性能和计算。这取决于执行环境。 有几种方法可以从文件/流/数据库中获取数据块(即使它是远程服务器)。您需要发布有关问题的更多详细信息以获得更好的建议。