从数组到向量转换时的java泛型问题

从数组到向量转换时的java泛型问题,java,arrays,generics,vector,Java,Arrays,Generics,Vector,为什么这是不允许的?arr是双精度[] Vector<Double> v = new Vector<Double>(Arrays.asList(arr)); Vector v=新向量(Arrays.asList(arr)); 我得到一个无法识别的构造函数错误。它认为我试图使用向量(java.util.List)构造函数,这似乎很奇怪,因为为什么它是一个双[]s的列表?如果我这样做,它就会编译 Vector<Double> v = new Vector(Ar

为什么这是不允许的?arr是双精度[]

Vector<Double> v = new Vector<Double>(Arrays.asList(arr));
Vector v=新向量(Arrays.asList(arr));
我得到一个无法识别的构造函数错误。它认为我试图使用
向量(java.util.List)
构造函数,这似乎很奇怪,因为为什么它是一个双[]s的列表?如果我这样做,它就会编译

Vector<Double> v = new Vector(Arrays.asList(arr));
Vector v=新向量(Arrays.asList(arr));

但是我得到了一个关于未选中赋值的警告,这是因为
Double
与Java中的
Double
不同


,因此,当您使用
double[]
作为其第一个参数调用它时,它认为您正在将数组本身作为
..
-样式参数列表中的第一个参数传递。因此,
Arrays.asList
返回一个
double[]
列表,其中只包含一个元素:您传入的
double[]

这是因为
double
与Java中的
double
不同

,因此,当您使用
double[]
作为其第一个参数调用它时,它认为您正在将数组本身作为
..
-样式参数列表中的第一个参数传递。因此,
Arrays.asList
返回一个包含
double[]
的列表,其中只包含一个元素:您传入的
double[]

List
这样的泛型不允许使用基元类型,这就是您的程序失败的原因

您需要迭代数组并逐项填充集合。或者,您可以使用该方法从
double[]
转换为
double[]
。该类可以在库中找到。

List
这样的泛型不允许基元类型,这就是程序失败的原因


您需要迭代数组并逐项填充集合。或者,您可以使用该方法从
double[]
转换为
double[]
。该类可以在库中找到。

只是为了澄清,“double”是一种基本类型,如“int”或“char”“Double”是一种类类型。你可以做一个向量。将原始数组更改为“Double”数组,而不是“Double”。

只是为了澄清,“Double”是一种基本类型,如“int”或“char”“Double”是一种类类型。你可以做一个向量。将原始数组更改为“Double”数组,而不是“Double”数组。

数组。asList(T…a)
不能像预期的那样使用基元数组,因为泛型和基元不能很好地相处。编译器正在对
T
使用
double[]
,这就是
数组的原因。asList
正在返回一个
列表

我认为获得所需的最短代码是:

Vector<Double> v = new Vector<Double>(arr.length);
for (double d : arr) v.add(d);
Vector v=新矢量(arr.length);
对于(双d:arr)v.add(d);
数组。asList(T…a)
不能像预期的那样使用基元数组,因为泛型和基元不能很好地相处。编译器正在对
T
使用
double[]
,这就是
数组的原因。asList
正在返回一个
列表

我认为获得所需的最短代码是:

Vector<Double> v = new Vector<Double>(arr.length);
for (double d : arr) v.add(d);
Vector v=新矢量(arr.length);
对于(双d:arr)v.add(d);

那么,将数组转换为向量是否没有简单的方法(无需迭代每一项)?@jhlu87添加了一个对可用实用程序方法的引用。那么,没有简单的方法(无需迭代每一项)呢如何将数组转换为向量?@jhlu87添加了对一个实用方法的引用,该实用方法可以随时使用。