簡體   English   中英

在 Java 中使用 ArrayList 的二維動態數組

[英]2D dynamic array using ArrayList in Java

我需要實現一個二維動態數組。 行數是固定的,比如 n。 但是每行的列數不是固定的和等價的。 例如,第一行有 3 個元素,第二行有 5 個元素。 如何使用 Arraylist 在 Java 中執行此操作。 謝謝。

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

您可以對行使用數組,因為此維度是固定的:

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

或使用嵌套的 ArrayLists:

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

嘗試:

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

正如您所說,您可以制作一個數組列表並使用 ArrayList(int initial capacity) 構造函數來設置每列的容量:

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

您可以創建一個 ArrayList 元素數組,因為您的行數是固定的。

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

注意:您需要在數組的每個條目中分配一個 ArrayList object。 所以...

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

或者,如果您希望行和列都是動態的,您可以創建一個 ArrayList 的 ArrayLists...。

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

再一次,您需要在 dynamicArray 的每個新條目中創建一個數組列表。

如果行數是固定的,請嘗試以下操作:

ArrayList<MyObject>[] = new ArrayList<MyObject>[fixedRows]
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);

我將創建一個 ArrayList 數組(ArrayList[3] rows = new ArrayList[3] 如果行是 3)然后為每一行創建列類並將它們插入 ArrayList。 然后將 ArrayList 放入陣列中。 行數組的索引可用於跟蹤行號。 記住 arrays 從 0 開始索引,所以行號是 rows[index+1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM