涉及非常大的数组索引存储非常大的值的问题的替代方案

Posted

技术标签:

【中文标题】涉及非常大的数组索引存储非常大的值的问题的替代方案【英文标题】:Alternatives for problems involving very large array indexing storing very large values 【发布时间】:2014-04-01 16:52:23 【问题描述】:

请提出一些替代方案来解决蛮力解决方案使用具有非常大索引的数组并存储非常大的值(非常大意味着超出 INT 的范围)的问题。我正在使用 Java 来解决这个问题。

示例问题: 将大量鹅卵石放入非常大的一组桶中,然后计算每个桶中的平均鹅卵石。

一种方法是声明一个大数组并根据用户指定的索引不断放置鹅卵石,然后计算平均值。但是这样我们会为这样的数组使用很大的空间。

【问题讨论】:

您可以使用一些基于文件的 Collection 实现。 【参考方案1】:

如果数组是稀疏的,一个选项可以是 Map 的索引值

如果所有数据仍然可以放入内存,则索引刚好超出int 的范围,您可以考虑数组数组。主数组可以包含大小为 1000000000 的数组。此数组中的第 0 个索引将包含值 0-999999999,第一个索引,1000000000-1999999999 等。

另一种选择是使用文件RandomAccessFile 可能有助于手动执行此操作,或者可能有一些库为您提供数组接口并在后台处理文件 I/O。

【讨论】:

以上是关于涉及非常大的数组索引存储非常大的值的问题的替代方案的主要内容,如果未能解决你的问题,请参考以下文章

当 95% 的情况下的值为 0 或 1 时,对非常大的数组的随机访问是不是有任何优化?

比较非常大的值php的有效方法

创建非常大的numpy数组时出现MemoryError [重复]

oracle 位图索引

GCP:与硬编码值相比,从数组中选择查询具有非常大的流程数据要运行

非常大的数据集的 MongoDB 扩展和内存使用