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

标签 java arrays data-structures bigdata

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

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

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

最佳答案

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

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

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

关于java - 涉及非常大的数组索引存储非常大的值的问题的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22792097/

相关文章:

java - 如何在 Python 中实现类似 Java 的枚举?

java - 在 JDBC 中转义单引号(出现错误 : You have an error in your SQL syntax . ..)

arrays - 如何将长格式(可能稀疏)的 DataFrame 转换为多维 Array 或 NamedArray

c++ - 每个字节读取数组字节

c++ - C++中vector是如何实现的

algorithm - 如何找到以下递归代码的时间复杂度?

c++ - 为什么在insert函数调用中不能直接使用返回指针作为参数?

java - 如何在 Java Web 应用程序中实现基于 PKI 证书的身份验证

java.sql.SQLException 到 'path' 的路径不存在

c++ - 数组大小是否需要为常量?