2011-01-06 151 views
1

我來自.Net背景,不理解以下片段。有人可以向我解釋<>和下面的代碼,因爲我似乎沒有得到它。對於愚蠢的問題抱歉,但我一直試圖瞭解整個晚上。參數化類型

List<double[]> x = new ArrayList<double[]>(); 

for (int i = 0; i < 3; i++) { 
    x.add(new double[] { 1, 2, 3, 4, 5, 6 }); 
} 

回答

2

它們相當於C#泛型。它創建一個雙數組列表,然後向其中添加[1,2,3,4,5,6]三次。

1

如果您創建了List<T>,則可以將T的實例添加到列表中。在這種情況下,Tdouble[]

0

在Java編程語言中,數組是對象,可以分配給java.lang.Object類型的變量。您的代碼也可以被寫成這樣

對象號碼=新雙[] {1,2, 3,4,5,6};

您的代碼

List<double[]> x = new ArrayList<double[]>(); 

for (int i = 0; i < 3; i++) { 
    x.add(numbers); 
} 

另一個變化:在這裏,我創建了 「X」 爲可容納對象類型的列表。因爲,數組是在Java對象的子類,我可以存儲在這個列表中的數組「X」

List<Object> x=new ArrayList<Object>(); 

for (int i = 0; i < 3; i++) { 
    x.add(numbers); 
} 
0

對於一個列表,在<類型參數>的指示對象的類型應存放在該清單。 List<double []>創建一個存儲雙打數組的列表。

List<double []> myList = new ArrayList<Double>(); 
myList.add(new double [] {1,2,3}); 
myList.add(new double [] {4,5,6}); 

會向myList添加兩個雙數組。所以:myList.get(0)將返回:{1,2,3} 和myList.get(1)將返回:{4,5,6}。

如果您正在嘗試只創建雙打的列表,而不是一個雙數組列表,你會怎麼做:

List<Double> myList = new ArrayList<Double>(); 
myList.add(1); 
myList.add(2); 
myList.add(3); 

現在myList.get(0)將返回1和myList.get( 1)將返回2.注意,要創建基本類型的列表,您需要在type參數中指定該基本類型的對象版本。也就是說,你不能這樣做:List<double>

這是因爲所有的類型參數都被編譯器轉換爲Object。

+0

太棒了!謝謝!!!因此,如果集合中的數字來自數據庫,我將如何添加這是一個雙數組?在第一個示例中,您將如何從循環中添加1,2,3? – 2011-01-06 13:35:31