我需要實現一個2D動態數組。行數是固定的,比如說n。但是,每行的列數不是固定的,並且是等價的。例如,第一行有3個元素,第二行有5個元素。如何使用Arraylist在Java中執行此操作。謝謝。在Java中使用ArrayList的2D動態數組
回答
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);
list和ArrayList有什麼區別?爲什麼只是ArrayList
'List'是一個'interface','ArrayList'是它的具體實現。那麼如果你有'List
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
幾乎,除了'2dlist'不是一個有效的Java標識符。 :) – 2011-06-03 20:28:04
@Ted Hopp,哪裏可以看到該標識符? ;-)感謝您的更正:-) – MarioP 2011-06-03 20:33:18
嘗試:
ArrayList<ArrayList<DataType>> array = new ArrayList<ArrayList<DataType>>();
for (int i = 0; i < n; ++i) {
array.add(new ArrayList<DataType>());
}
你不能混合使用數組和泛型。 – trutheality 2011-06-03 20:29:28
Ack。修正答案。 – 2011-06-03 20:30:59
更正:你可以用'@SuppressWarnings(「unchecked」)''去掉,但你不鼓勵。 – trutheality 2011-06-03 20:37:55
如你說,可以使的ArrayLists的陣列,並且使用該ArrayList(INT初始容量)構造設置每列的容量:
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對象。所以......
for (int loop = 0; loop < n; loop++)
dynamicArray[loop] = new ArrayList();
或者如果你想行和列是動態的,你可以創建的ArrayList的ArrayList ....
ArrayList<ArrayList<T>> dynamicArray = new ArrayList<ArrayList<T>>();
再次,你需要在dynamicArray的每個新條目中創建一個數組列表。
如果行的數量是固定的,嘗試這樣的事情:
ArrayList<MyObject>[] = new ArrayList<MyObject>[fixedRows]
被java編譯器禁止。你不能創建一個通用數組。 – MarioP 2011-06-03 20:39:55
需要'@SuppressWarnings(「unchecked」)才能始終工作。 – trutheality 2011-06-03 20:40:40
該死的Java泛型...然後'ArrayList [] = new ArrayList [fixedRows]'。吸它Java。 – erickzetta 2011-06-03 20:45:06
您可以使用該行的陣列,因爲這dimenstion是固定的:
@SuppressWarnings("unchecked")
ArrayList<T>[] arr = new ArrayList[ fixedsize];
或使用嵌套的ArrayList :
List<List<T>> list = new ArrayList<List<T>>(fixedsize);
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]的行=新的ArrayList [3]如果行是3)然後,對於每個行創建列的類和它們插入到一個ArrayList。然後將ArrayList放入數組中。行數組的索引可用於跟蹤行數。記得數組的起始索引爲0,因此行號將是行[index + 1]
- 1. 動態二維數組在Java中使用Arraylist
- 2. java中的2D ArrayList
- 3. 比較ArrayList和2D數組
- 4. 如何在java中動態創建2d數組for循環?
- 5. 2D矢量/動態數組
- 6. 2d ArrayList使用ListView
- 7. 用指針創建2d動態數組
- 8. 2 ArrayList中的Java數組
- 9. 移調值中的Java 2D的ArrayList
- 10. Java動態2D矩陣
- 11. 將ArrayList轉換爲2D數組
- 12. Java動態數組
- 13. 動態分配2D int數組
- 14. 動態分配對象2d數組lua
- 15. 2D動態數組重新分配
- 16. vb6:重新調整2D動態數組
- 17. 在2D動態數組中填充數據
- 18. 在Java中,爲什麼要在arrayList上使用數組
- 19. 在java中填充2d數組
- 20. 在Java中連接2個2D數組?
- 21. 在java 2d數組中搜索字詞
- 22. Delphi使用由靜態數組定義的2d數組
- 23. 如何使用for循環動態創建2D numpy數組的3d numpy數組
- 24. C如何知道函數中2D動態數組的維數?
- 25. Arraylist使用數組?
- 26. 使用std :: vector來動態分配2d數組?
- 27. 如何使用TFileStream將2D矩陣讀入動態數組?
- 28. 在java/android中使用arraylist
- 29. 在Prolog中使用2D數組
- 30. 在C++中使用2d數組交換
請問 - 在你的例子中 - 第一行總是有3個元素?如果是這樣,爲什麼不簡單地創建一個(例如)'Something [] [] s = new Something [numRows] []'和's [0] = new Something [3]'? – Tedil 2011-06-03 20:30:03