在Java中使用ArrayList的2D动态数组

时间:2011-06-03 20:23:27

标签: java multidimensional-array arraylist

我需要实现2D动态数组。行数是固定的,比如说n。但每行的列数不固定且等效。例如,第一行有3个元素,第二行有5个元素。如何使用Arraylist在Java中执行此操作。感谢。

9 个答案:

答案 0 :(得分:3)

List<List<Foo>>怎么样?

例如:

List<List<Foo>> list = new ArrayList<List<Foo>>();

List<Foo> row1 = new ArrayList<Foo>();
row1.add(new Foo());
row1.add(new Foo());
row1.add(new Foo());
list.add(row1);

List<Foo> row2 = new ArrayList<Foo>();
row2.add(new Foo());
row2.add(new Foo());

list.add(row2);

答案 1 :(得分:2)

ArrayList<ArrayList<SomeObject>> twodlist = new ArrayList<ArrayList<SomeObject>>();
ArrayList<SomeObject> row = new ArrayList<SomeObject>();
row.add(new SomeObject(/* whatever */));
// etc
twodlist.add(row);
row = new ArrayList<SomeObject>();
// etc

答案 2 :(得分:2)

您可以为行使用数组,因为此维度已修复:

@SuppressWarnings("unchecked")
ArrayList<T>[] arr = new ArrayList[ fixedsize];

或使用嵌套的ArrayLists:

List<List<T>> list = new ArrayList<List<T>>( fixedsize );

答案 3 :(得分:1)

尝试:

ArrayList<ArrayList<DataType>> array = new ArrayList<ArrayList<DataType>>();
for (int i = 0; i < n; ++i) {
    array.add(new ArrayList<DataType>());
}

答案 4 :(得分:0)

正如您所说,您可以创建一个arraylists数组并使用ArrayList(int初始容量)构造函数来设置每列的容量:

ArrayList<YourObject>[] rows=new ArrayList<YourObjects>[n];
for(i=0;i<n;i++){
rows[i]=ArrayList<YourObjects>(initialsize);
}

答案 5 :(得分:0)

您可以创建一个ArrayList元素数组,因为您的行数是固定的。

ArrayList[] dynamicArray = new ArrayList[n]();

注意:您需要在数组中的每个条目中分配一个ArrayList对象。所以......

for (int loop = 0; loop < n; loop++)
dynamicArray[loop] = new ArrayList();

如果您希望行和列都是动态的,则可以创建ArrayLists的ArrayList ....

ArrayList<ArrayList<T>> dynamicArray = new ArrayList<ArrayList<T>>();

再次,您需要在dynamicArray的每个新条目中创建一个数组列表。

答案 6 :(得分:0)

如果行数是固定的,请尝试以下方法:

ArrayList<MyObject>[] = new ArrayList<MyObject>[fixedRows]

答案 7 :(得分:0)

List<ArrayList<SomeObject>> twoDList = new ArrayList<List<SomeObject>>(n);
for( int i=0; i<n; i++ )
    twoDList.add( new ArrayList<SomeObject>() );

用作:

twoDList.get(rownumber).add(newElementInColumn);

答案 8 :(得分:0)

如果行为3,我将创建一个ArrayList数组(ArrayList [3] rows = new ArrayList [3])然后为每一行创建列类并将它们插入到ArrayList中。然后将ArrayList放入Array中。行数组的索引可用于跟踪行号。记住数组从0开始索引,因此行号将是行[index + 1]