2016-10-03 98 views
-1

我正在写一个程序,将坐标作为输入,并概念化网格中的坐标,为此我使用的是二维数组。问题是一些坐标大于十亿,我相信二维数组的最大尺寸大约在8亿左右。我知道我可以增加分配给JVM的内存以增加最大大小;但有没有办法做到这一点,而不会超过默认的最大尺寸,或另一个X没有最大尺寸的网格系统?谢谢二维网格大于二维数组中的Java

+1

您看过[此类似的问题和答案](http ://stackoverflow.com/questions/674186/making-a-very-large-java-array)? –

+0

为什么你的数组匹配一个索引大小到一个坐标步?你可以做一些划分,以便你的数组缩放吗?那么追踪点数呢? – matt

+0

选项二:稀疏数组按照[这个类似的问题](http://stackoverflow.com/questions/22792097/alternatives-for-problems-involving-very-large-array-indexing-storing-very-large)。 –

回答

-1

我理解你吗? (1,3)你会这样做吗?

[0][0][1][0] 
[0][0][0][0] 
[0][0][0][0] 
[0][0][0][0] 

如果您的代码需要一个具有该大小的数组来存储坐标,请重新考虑程序的工作方式。另一种使用ArrayList存储坐标的方法,或者其中每个条目都是数组中不同的占用位置的东西。这样,你只用内存来占用被占用的点,而不是那些没有被占用的点。因为如果按照您的计划进行操作,您将在网格上为每个坐标使用32位,当您知道它们大多数为0.

+0

这种方法如何回答问题? –

+0

@HovercraftFullOfEels我不能使用评论,因为我的代表,否则我会用这个澄清评论。 – JitterbugChew

+0

是的,我修改了它,所以我只需要填充的坐标,我只是想知道是否有一种方法可以制作更大的2D数组,或者我可以使用另一种数据类型 –