使用Arrays.asList从数组创建List

3

这篇文章展示了下面的代码如何从数组中创建一个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,不确定是否相关。

3
我不知道为什么您的问题被重新打开了。https://dev59.com/R3M_5IYBdhLWcg3wPAdF - Sotirios Delimanolis
2个回答

2

不要使用原始类型。你的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);

3
Java 7引入了“<>”钻石操作符,但该用户表示他正在使用Java 6。 - halex
@halex 谢谢!已编辑。 - Elliott Frisch
你的特征是空的。实际上,在这个示例中,填充该数组并不是必要的。 - Tom
@Tom 或者它将是19个null。 - Elliott Frisch
没错,你必须修正类型以纠正代码,已经忘记了。但是“他的”features不是空的 :P。 - Tom

2
每个数组也是一个对象。你调用 Arrays.asList 方法创建了一个只有一个元素的列表,该元素就是整个数组。因此你创建了一个 List<double[]>,而不是 List<Double>。由于您使用了原始类型,编译器没有发现这个错误,并仅编译出一个警告信息。如果你将代码改成 new ArrayList<Double>(Arrays.asList(features)),那么程序将无法编译。

我注意到使用new ArrayList<Double>(Arrays.asList(features))编译失败,但是我不明白问题出在哪里。感谢您指出这个问题。 - goldfrapp04

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接