首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中存储类似于矩阵或表的数据,并从它们中高效地检索?

如何在Java中存储类似于矩阵或表的数据,并从它们中高效地检索?
EN

Stack Overflow用户
提问于 2012-04-08 09:00:34
回答 2查看 1.8K关注 0票数 1

我必须存储大约1000万行和几列的大型数据表。我需要做的事情可以概括如下:

1.根据列中的值,我需要选择一些行。

示例:

第500行:\x{e76f}\x{e76f}*

第501行:\x{e76f}\x{e76f}第501行:\x{e76f}\x{e76f}

第501行:\x{e76f}\x{e76f}第501行:\x{e76f}\x

第602行:\x{e76f}\x{e76f}第602行:\x{e76f}\x{e76f}

在这里,第一个列值可以看作是行ID。

假设我正在搜索那些在其第4列中有value>=5的行。因此,过滤后的输出将是:

第500行:|10|3|4|5|100|314|45|

第501行:|24|3|8|6|260|810|50|

第602行:|34|7|9|6|350|760|10|

2.在第二步中,我需要以一种列式的方式对它们进行比较。假设行500在其第2列和第3列中分别有3和4的值,这(3-4)也属于范围(3-8)。但这个范围与(7-9)不一致。

因此,在第500行和第501行之间有一个关系。产出如下:

10 24

24 34

3.假设我被赋予了10的值,那么我需要在它的第一列中找到有10的行,并将第7列中的值减少5。

第500行:|10|3|4|5|100|314|40|

到目前为止,我非常容易地使用Matlab进行这些操作,使用matlab库函数。但是,我需要用Java转换整个代码。一种方法是使用大型数组并使用for循环访问每一行。对于这么大的阵列,它会有效吗?请在这方面帮助我。

EN

回答 2

Stack Overflow用户

发布于 2012-04-08 09:17:30

首先,我建议使用内存中的RDBS,如SQLLiteHyperSQLJavaDB

在此之后,您可以查看谷歌番石榴库中的表格

基于行的查找在HashBasedTableTreeBasedTable中是最快的,但是您可能需要考虑ArrayTable,因为它看起来数据并不稀疏。

最后,看看这个问题

票数 3
EN

Stack Overflow用户

发布于 2012-04-08 09:28:35

我将尝试定义您的需求,并在此基础上给出适当的数据结构。1-你需要快速进入元素。基于此,避免使用LinkedList或使用ArrayList或静态数组。2-由于您的数据很大,我建议您不要将它们全部加载到主内存中(动态加载)。

注意:有更高级的方法可以通过使用B+树来优化您的访问,但是我不想深入尝试我前面说过的话,我不认为您需要对它进行更多的优化(如果您正确有效地实现了动态加载)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10061654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档