从数组到向量转换时的java泛型问题
为什么这是不允许的?arr是双精度[]从数组到向量转换时的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
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添加了对一个实用方法的引用,该实用方法可以随时使用。