创建列表数组

时间:2013-06-08 02:52:27

标签: java arrays list

有没有办法在Java中组合列表和数组?我正在为2D数组而不是2D列表存储tile图的数据,因为这样我可以为它们定义一个set size。它到目前为止工作,因为每个位置都有一个瓦片,只能有一个物体占据它。现在我想为单个磁贴添加多个效果,但Java不允许创建带有泛型的数组,因此没有ArrayList [] []。如果每个tile都是它自己的对象,它可能只有自己的ArrayList效果,但我真的想避免这种情况。另外我不知道每个瓷砖可能有多少效果,所以我不能只定义一个3D数组。

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

3 个答案:

答案 0 :(得分:6)

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

将您想要的内容封装到单个对象中,您可以将其保存在更简单的内容中。我看到你的方法变得迟钝,很难很快跟进。

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

答案 1 :(得分:1)

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

class Effects extends ArrayList<Effect> { }

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

ArrayList<Effect>[][] board = (ArrayList<Effect>[][]) new ArrayList[...][...];

答案 2 :(得分:1)

可以使用功能强大的Guava TableJavaDoc)。