Java有没有高效的2D ArrayList类?

时间:2011-03-10 22:27:13

标签: java arrays multidimensional-array arraylist

我知道可以创建一个带有ArrayList<ArrayList<E>>的2D ArrayList,但这对于添加和检索对象来说很麻烦,而且是一个真正的噩梦。

是否有任何2D ArrayList类可以更有效地执行此类操作?我正在从头开始编写一个真正的2D ArrayList类,我想知道是否有其他人以有效的方式完成了这类事情。

5 个答案:

答案 0 :(得分:5)

不,遗憾的是没有2d ArrayList类。您的替代选项是(如果Diamension的0/1/2是常数):

MyType[][] myList = new MyType[n][m];

ArrayList<MyType>[] myList = new ArrayList<MyType>[n];

ArrayList<ArrayList<MyType>> myList = new ArrayList<ArrayList<MyType>>();

另一种选择是将所有数据保存在1d ArrayList中并创建一个接收(x,y)的函数并返回ArrayList中的位置x。这样你就可以在2d数组之外进行演示,但是可以在1d ArrayList中轻松保存元素

答案 1 :(得分:1)

使用“ArrayList&gt;”从我所看到的那种类型方法对于这类事物来说是很好的和非常标准的。您可以轻松编写一个2D数组列表类,它提供了添加/删除项目等的便捷方法,并且使用它将远非“麻烦”或“阉割噩梦”。以this实现为例。它并不完美,但它说明了使用这种方法是多么容易。

答案 2 :(得分:1)

在guava的javolution和FastTable实现中查看Table

答案 3 :(得分:0)

Google Collections有一个Table集合。它以Rows / Cols的形式布局,可直接访问,按行和按行访问。表的不同实现基于访问类型

具有不同的效率

答案 4 :(得分:0)

如果有任何帮助,我构建了一个3D“网格”数据结构。

关键技巧是将空间细分为“块”,以便有效地存储稀疏数据。

如果您愿意,可以通过忽略z维度(将其保持为0)将其用作2D集合,尽管这可能有点过分。如果你想要这种结构,还是一个选择。或者,您可以将其简化为2D。

相关问题