首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种在java中使用无限列表的方法?

有没有一种在java中使用无限列表的方法?
EN

Stack Overflow用户
提问于 2015-03-07 08:02:32
回答 4查看 190关注 0票数 0

我正在尝试制作一个随机生成的2-d游戏,我计划在繁殖点右侧列出地形列表,在繁殖点左侧列出地形列表。然而,我需要这些列表没有长度限制,因为我希望世界是无限的。如果我找不到办法,我会让世界变得“圆”,但无穷大会更好。这个是可能的吗?

EN

回答 4

Stack Overflow用户

发布于 2015-03-07 08:07:09

ArrayList是无限的.直到内存耗尽。但我猜这不是问题所在。

更新:是的,这是有限的,尽管我认为没有人会注意到世界在20亿台之后重新启动。

我又想了一遍。你需要的是一个随机函数,当你给它种子和当前位置时,它会一次又一次地创建相同的值。所以你不是存储世界,而是在运行中重新计算它。

所以你只需要一个无限的计数器来表示你世界中的位置。唯一的挑战将是事件结果的存储,比如我们吃了蘑菇和被摧毁的桥梁。

票数 2
EN

Stack Overflow用户

发布于 2015-03-07 08:20:40

将所有数据存储在一个列表中会有很多限制。

如果你使用ArrayList,你不能有无限的元素。如果你使用LinkedList,你会失去随机访问,所以速度会慢很多。

对于任何列表,RAM都是一个问题。

将生成的区域拆分成块,然后将它们存储到硬盘驱动器中,这样会更好。

现在,您仍然需要一个已加载区域的列表,但这将受到作用域的限制。如果你在某个城镇以东2英里的地方,保留城镇信息是没有意义的(我希望如此)。

其中一个非常受欢迎的游戏是“我的世界”。试图将整个“我的世界”加载到你的RAM中是不可能的--但是它仍然有无限世界的潜力。

票数 1
EN

Stack Overflow用户

发布于 2015-03-07 08:23:56

如果世界变得很大,我不会把它存储在ArrayListLinkedList中。相反,您可以让整个世界依赖于随机选择的longseed。然后可以使用new Random(seed ^ i).nextInt() (或其他工具)找到位置i处的地形。这样,世界将是(有效的)无限的,你不必将地形保存在内存中。无论何时你回到以前去过的地方,它都会和以前一样。不同世界的数量是2^64,所以你必须活很长一段时间才能再次看到同一个世界。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28909714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档