2010-11-13 121 views
3

嗨,當我想有像矢量向量的東西(元素當然會排序)我想有arraylist的arraylists,但在C + +我會這樣做訪問元素v.at(i).at(j)=5;,當我需要添加新元素v.at(i).push_back(value); 那麼我如何在java中做到這一點?因爲我只能訪問外部數組列表,但是我不知道如何添加新元素......並且有沒有更好的方法來模擬Java中向量的C++向量?Array列表的arraylist

P.S(它不是一個矩陣3 * 2 EX但每個ArrayList中可以有不同的大小)

回答

7

聲明ArraList<Integer>ArrayList S:

ArrayList<ArrayList<Integer>> v = new ArrayList<ArrayList<Integer>>(); 
v.add(new ArrayList<Integer>()); 

v.get(0).add(new Integer(5)); 
v.get(0).add(new Integer(10)); 
System.out.println(v.get(0).get(0)); // => 5 
System.out.println(v.get(0).get(1)); // => 10 
+1

你不應該使用'new Integer(..)'。讓Java autobox吧。或者,最不喜歡使用'Integer.valueOf(..)' – Bozho 2010-11-13 18:26:12

4
List<List<Integer>> l = new ArrayList<List<Integer>>(); 

// initialize the inner lists 
for (int i = 0; i < 10; i++) 
    l.add(new ArrayList<Integer>()); 


// now you can use it as you would like 
l.get(i).add(5); 
l.get(i).set(0, 3); 
+0

停止使用Vector類! Sry很粗魯,但Vector在5年內「被棄用」。 – helpermethod 2010-11-13 11:05:49

+0

我知道,我剛剛編輯並從ArrayList更改爲Vector。我想他需要一個同步的版本... – dacwe 2010-11-13 11:07:57

+0

改回到ArrayList(現在使用List接口 - 更清潔)。 – dacwe 2010-11-13 11:10:09

1

你可以在Java中有List<List<Integer>>。訪問該元素將是list.get(i).get(j)。同樣添加:list.get(i).add(var)。還需要看看set(..)方法

0

我無法對先前的評論迴應還,所以我會在這裏發佈。

,因爲NetBeans說,這是沒有必要寫

ArrayList< ArrayList< Integer>> v = new ArrayList< ArrayList< Integer>>(); 

因爲這些論點是多餘的;相反,您可以編寫:

ArrayList< ArrayList< Integer>> v = new ArrayList<>();