这篇文章展示了下面的代码如何从数组中创建一个List
。
double[] features = new double[19];
List<Double> list = new ArrayList(Arrays.asList(features));
我期望
list
包含19个元素,每个元素都是0.0。但是,在运行上面的代码后,list
只包含1个元素,即[0.0, 0.0, ..., 0.0]
。我正在运行Java 6,不确定是否相关。这篇文章展示了下面的代码如何从数组中创建一个List
。
double[] features = new double[19];
List<Double> list = new ArrayList(Arrays.asList(features));
list
包含19个元素,每个元素都是0.0。但是,在运行上面的代码后,list
只包含1个元素,即[0.0, 0.0, ..., 0.0]
。我正在运行Java 6,不确定是否相关。不要使用原始类型。你的features
是空的。并且你不能创建一个基本类型double
的集合,你需要使用Double
。
Double[] features = new Double[19]; // <-- an Object type
Arrays.fill(features, Double.valueOf(1)); // <-- fill the array
List<Double> list = new ArrayList<Double>(Arrays.asList(features));
System.out.println(list);
features
不是空的 :P。 - TomArrays.asList
方法创建了一个只有一个元素的列表,该元素就是整个数组。因此你创建了一个 List<double[]>
,而不是 List<Double>
。由于您使用了原始类型,编译器没有发现这个错误,并仅编译出一个警告信息。如果你将代码改成 new ArrayList<Double>(Arrays.asList(features))
,那么程序将无法编译。new ArrayList<Double>(Arrays.asList(features))
编译失败,但是我不明白问题出在哪里。感谢您指出这个问题。 - goldfrapp04