2011-01-06 115 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