数组的长度太长 Java

  • 本文关键字:Java 数组 java
  • 更新时间 :
  • 英文 :


我需要在java中初始化一个长度为k+1的long[]。但是 k 的类型很长,长度最多可以达到 10^12。因此,程序会引发不兼容的类型错误。

Error: java: incompatible types: possible lossy conversion from long to int

我该怎么办?

编辑: 我不能转换为 int,因为 k 的长度可以是 10^12

这就是Java。 对于单个维度,您根本不能拥有大于 ~20 亿个条目(即int的最大正值(的数组。语言规范禁止这样做。 维度表达式必须具有int值。

因此,尝试为大小设置一个长值是没有意义的;你不能。

此外,当然,正如评论中已经指出的那样,您谈论的是需要大约 8TB 的地址空间,因此这不会很好地工作还有一个次要原因。

所以,要回答"我该怎么办?"这个具体问题,你有一个选择。

  1. 接受大约 20 亿个条目的限制,或

  2. 从根本上重新设计您的数据和算法,以应对您希望处理的大数据。

既然你说这是USACO,我想重点是让你为上述两个选项中的第二个找出一些东西。

最新更新