0

有没有办法在 Java 中组合列表和数组?我将瓦片地图的数据存储在 2D 数组而不是 2D 列表中,因为这样我可以为它们定义一个集合大小。到目前为止,它的工作原理是因为每个位置都有一个图块,并且只能有一个对象占据它。现在我想为单个图块添加多个效果,但是 Java 不允许使用泛型创建数组,所以没有 ArrayList[][]。如果每个图块都是它自己的对象,它可以有自己的 ArrayList 效果,但我真的想避免这种情况。另外我不知道每个图块可能有多少效果,所以我不能只定义一个 3D 数组。

有关如何解决此问题的任何建议。我想要更多面向设计的建议,而不是破解数组/泛型问题。

4

3 回答 3

6

我认为更面向对象的方法比复杂的嵌套结构更适合您。

将你想要的东西封装到一个可以用更简单的东西维护的对象中。我看到你的方法变得迟钝,很难很快地遵循。

List如果每个条目都保持其(i, j)在网格中的位置及其状态,则可以维护单个稀疏条目。

于 2013-06-08T02:56:41.557 回答
1

可以使用强大的Guava Table ( JavaDoc )。

于 2013-06-08T05:19:19.877 回答
1

面向对象的方式是让每个图块成为一个对象,但你说你真的想避免这种情况。如果这是问题,您可以使用继承而不是组合:

class Effects extends ArrayList<Effect> { }

另一种方法是使用未经检查的演员表,你也说你不想要:

ArrayList<Effect>[][] board = (ArrayList<Effect>[][]) new ArrayList[...][...];
于 2013-06-08T03:10:20.330 回答