通过负指数存储值

时间:2015-08-30 06:12:12

标签: java

我实际上正在为我的无限大小的世界地图制作一个块系统, 我才意识到我将使用否定 xy坐标。

所以,我的问题是存储由xy索引的无限数量的块对象的最佳解决方案。

到目前为止,我一直在使用它:

ArrayList<ArrayList<Chunk>> chunks = new ArrayList<ArrayList<Chunk>>();
//...
chunk = chunks.get(x).get(y);
version = chunks.get(x).get(y).getVersion();

但是当负面指数出现时,整个概念都失败了。

2 个答案:

答案 0 :(得分:6)

使用地图而不是列表:

Map<Integer, Map<Integer, Chunk>> chunks = new TreeMap<>();

// ...

Chunk chunk = chunks.get(x).get(y);

显然,此解决方案仅在内存不足时才有效。我很难理解地图的无限性。当你接近边界时,你会生成新的瓷砖/块吗?

答案 1 :(得分:3)

您想在数组中存储无限数据量吗? 可能你需要比这更好的东西。您无法将所有信息保存在内存中,因此您需要一个更好的数据结构,使您只能在内存中获得一些信息并将剩余部分保留在磁盘上。

相关问题