有没有办法在Java中组合列表和数组?我正在为2D数组而不是2D列表存储tile图的数据,因为这样我可以为它们定义一个set size。它到目前为止工作,因为每个位置都有一个瓦片,只能有一个物体占据它。现在我想为单个磁贴添加多个效果,但Java不允许创建带有泛型的数组,因此没有ArrayList [] []。如果每个tile都是它自己的对象,它可能只有自己的ArrayList效果,但我真的想避免这种情况。另外我不知道每个瓷砖可能有多少效果,所以我不能只定义一个3D数组。
有关如何解决此问题的任何建议。我想要更多面向设计的建议,而不是克服阵列/泛型问题。
答案 0 :(得分:6)
我认为更加面向对象的方法比复杂的嵌套结构更适合你。
将您想要的内容封装到单个对象中,您可以将其保存在更简单的内容中。我看到你的方法变得迟钝,很难很快跟进。
如果每个稀疏条目在网格中保持其List
位置及其状态,则可以保留一个(i, j)
稀疏条目。
答案 1 :(得分:1)
面向对象的方法是使每个图块成为一个对象,但是你说你真的想避免这种情况。如果这是问题,你可以使用继承而不是组合:
class Effects extends ArrayList<Effect> { }
另一种方法是使用未经检查的演员表,你也说你不想要:
ArrayList<Effect>[][] board = (ArrayList<Effect>[][]) new ArrayList[...][...];
答案 2 :(得分:1)
可以使用功能强大的Guava Table(JavaDoc)。