我工作的一个Java项目,将允许用户解析与潜在的成千上万行的多个文件。解析出的信息将被存储在不同的对象,其然后将被添加到集合。

由于GUI不会需要一次加载所有这些对象并将其保存在内存中,我正在寻找一种有效的方式来加载/卸载从文件中的数据,使数据只加载到集合时,用户请求。

我只是评估选项现在。我也想在那里,加载数据的一个子集到收集,并将其显示在GUI上后,最好的办法重新加载先前观察到的数据的情况。重新运行解析器/填充收集/填充GUI?或者可能找到一种方法来收集保存到内存中,或序列化/反序列化集合本身?

我知道如果进行某种数据过滤的数据的装载/卸载子集可能很麻烦。比方说,我过滤的ID,所以我的新子集将前两个分析子集包含的数据。这将是没有问题的是我保持整个数据的主副本在存储器中。

我读过,谷歌的集合处理大数量,简化了很多事情的数据,并提供方法时,所以这可能会提供一种替代,让我保持收集在内存中是好的,高效。这只是一般的谈话。上使用的收集问题是一个独立的和复杂的事情。

你知道什么是对这种类型的任务,一般建议?我想听听你有类似的情况做了什么。

如果需要,我可以提供更多的细节。

有帮助吗?

解决方案

可以嵌入一个数据库到应用程序,如 HSQLDB 。这样,你解析文件中的第一次,然后用SQL做简单的和复杂的querys。

  

HSQLDB(的HyperSQL数据库)是   领先的SQL关系数据库引擎   用Java编写的。它有一个JDBC驱动程序   并支持几乎全部ANSI-92 SQL   (BNF树格式)加上许多SQL:2008   增强。 设有一个小型,快速   数据库引擎,提供内存   和基于磁盘的表和支撑   嵌入式和服务器模式即可。   此外,它还包括这样的工具   作为命令行SQL工具和GUI   查询工具。

其他提示

如果您有大量数据的,大量的文件,而你是短期记忆,你可以做文件的初始扫描索引它。如果文件被分成记录由换行,你知道如何读取记录,您可以通过字节位置索引记录。后来,如果你想读一组特定的indeces的,你会做一个快速查找找到的字节范围,你需要阅读,读那些从文件的InputStream。当你不需要这些项目了,他们会GCed。你再也不会担任更多的项目比你需要到堆中。

这是一个简单的解决方案。我敢肯定,你可以找到一个库,为您提供更多的功能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top