2D dynamic array using ArrayList in Java

↘锁芯ラ 提交于 2019-12-19 08:20:11

问题


I need to implement a 2D dynamic array. The number of rows is fixed, say n. But the number of columns for each row is not fixed and equivalent. For instance, the first row has 3 elements and the second row has 5 elements. How to do this in Java using Arraylist. Thanks.


回答1:


How about List<List<Foo>> ?

For Example:

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);



回答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



回答3:


You can either use a array for the rows since this dimenstion is fixed:

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

or use nested ArrayLists:

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



回答4:


Try:

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



回答5:


You could create an array of ArrayList elements because your row count is fixed.

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

Note: You'll need to allocate an ArrayList object in each entry in the array. So...

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

OR if you'd like both rows and columns to be dynamic you could create an ArrayList of ArrayLists....

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

Once again, you'll need to create an array list in each new entry to dynamicArray.




回答6:


if the number of rows is fixed, try something like this:

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



回答7:


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

Use as:

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



回答8:


I would create an array of ArrayList (ArrayList[3] rows = new ArrayList[3] if the rows were 3) Then for each row create column classes and insert them into an ArrayList. and then place the ArrayList into the Array. the row array's index can be used to keep track of the row number. Remember arrays start there indexes at 0 so the row number would be rows[index+1]




回答9:


As you say, you can make an array of arraylists and use the ArrayList(int initial capacity) constructor to set the capacity of each column:

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


来源:https://stackoverflow.com/questions/6232257/2d-dynamic-array-using-arraylist-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!