2016-10-03 100 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數組,或者我可以使用另一種數據類型 –