Java 如果我必须对大量数据执行二进制搜索,我应该使用什么样的数据类型?

Java 如果我必须对大量数据执行二进制搜索,我应该使用什么样的数据类型?,java,arrays,binary-search,large-data,Java,Arrays,Binary Search,Large Data,编辑:好的,我的问题已经回答了。非常感谢。最初我对使用一百万数组有疑问,因为我读到它在C语言中引起了一些问题,所以感谢大家的回复 好的,大家好,我有一个学校作业,我必须编写一个二进制搜索代码,在一组可能高达100万的数据中搜索一段数据 我计划只使用数字,所以二进制搜索本身应该很容易。数据将是大量随机生成的数字(排序)到一个文本文件中,我计划让程序打开该文件并将所有数据加载到数组中 但是到目前为止,我只使用了几百个大小的数组我的问题是:声明一个100万的数组是否可行? 如果数组大小为100万不现实

编辑:好的,我的问题已经回答了。非常感谢。最初我对使用一百万数组有疑问,因为我读到它在C语言中引起了一些问题,所以感谢大家的回复

好的,大家好,我有一个学校作业,我必须编写一个二进制搜索代码,在一组可能高达100万的数据中搜索一段数据

我计划只使用数字,所以二进制搜索本身应该很容易。数据将是大量随机生成的数字(排序)到一个文本文件中,我计划让程序打开该文件并将所有数据加载到数组中

但是到目前为止,我只使用了几百个大小的数组我的问题是:声明一个100万的数组是否可行?

如果数组大小为100万不现实,你们会有什么建议?我是否必须将数据拆分为多个文件,并使用较小的数组大小(例如10000)?或者除了数组之外,还有其他数据类型可以使用吗

非常感谢您的回复,谢谢


PS:我正在用Java进行编码。

对于大型集合,应该使用的数据结构在很大程度上取决于所使用的数据类型,在本例中,它是一个数字(大概是
int
)或类似的数字。Java中的基元数组只是变量大小乘以数组长度的内存块,就像在C中一样,因此如果您使用
int
s(4个字节)并且有一百万个基元数组,那么数组只需使用4MB内存,然后您就可以使用
数组。sort


类似情况下,排序对象而不是原语的答案将取决于许多变量,例如对象的大小以及它们是否将位于数据库、平面文件中,等等。

对于大型集合,应该使用的数据结构在很大程度上取决于所使用的数据类型,在这种情况下,它是一个数字(大概是
int
)或类似的数字。Java中的基元数组只是变量大小乘以数组长度的内存块,就像在C中一样,因此如果您使用
int
s(4个字节)并且有一百万个基元数组,那么数组只需使用4MB内存,然后您就可以使用
数组。sort


对于排序对象而不是原语的类似情况,答案将取决于许多变量,例如对象的大小以及它们是否位于数据库、平面文件等中。

可以设置的数组的最大大小是
Integer.MAX\u VALUE-5
。内存地址索引是32位的,并且有一个对象头+长度,所以它们仍然需要由32位索引寻址

请参阅此帖子

如果排序的数字在特定的值范围内,则可以参考此表

字节:字节数据类型是一个8位有符号2的补码整数。它的最小值为-128,最大值为127(含)。字节数据类型对于在大型阵列中节省内存非常有用,而实际上节省内存很重要。它们也可以用来代替int,因为它们的限制有助于澄清代码;变量的范围是有限的这一事实可以作为文档的一种形式

short:short数据类型是一个16位有符号2的补码整数。它的最小值为-32768,最大值为32767(含)。与byte一样,同样的准则也适用:在内存节省非常重要的情况下,可以使用short来在大型阵列中节省内存

int:int数据类型是一个32位有符号2的补码整数。它的最小值为-2147483648,最大值为2147483647(含)。对于整数值,此数据类型通常是默认选择,除非有理由(如上所述)选择其他数据类型。此数据类型很可能足够大,足以容纳程序将使用的数字,但如果需要更大范围的值,请使用long

long:long数据类型是一个64位有符号2的补码整数。其最小值为-9223372036854775808,最大值为9223372036854775807(含)。当需要比int提供的值更宽的值范围时,请使用此数据类型


Src:

可以设置的数组的最大大小是
Integer.MAX\u值-5
。内存地址索引是32位的,并且有一个对象头+长度,所以它们仍然需要由32位索引寻址

请参阅此帖子

如果排序的数字在特定的值范围内,则可以参考此表

字节:字节数据类型是一个8位有符号2的补码整数。它的最小值为-128,最大值为127(含)。字节数据类型对于在大型阵列中节省内存非常有用,而实际上节省内存很重要。它们也可以用来代替int,因为它们的限制有助于澄清代码;变量的范围是有限的这一事实可以作为文档的一种形式

short:short数据类型是一个16位有符号2的补码整数。它的最小值为-32768,最大值为32767(含)。与byte一样,同样的准则也适用:在内存节省非常重要的情况下,可以使用short来在大型阵列中节省内存

int:int数据类型是一个32位有符号2的补码整数。它的最小值为-2147483648,最大值为2147483647(含)。对于整数值,此数据类型通常是默认选择,除非有理由(如上所述)选择其他数据类型。此数据类型很可能是大型数据类型