我有一个双阵列doubleArray1.我尝试了Arrays.asList().contains()如下所示的操作
double doubleArray1 [] = {1D,2D,3D};
if(Arrays.asList(doubleArray1).contains(1D)) {
System.out.println("hello-1");
}
Run Code Online (Sandbox Code Playgroud)
它不打印任何东西.然后我把它变成了一个Double数组
Double doubleArray1 [] = {1D,2D,3D};
if(Arrays.asList(doubleArray1).contains(1D)) {
System.out.println("hello-1");
}
Run Code Online (Sandbox Code Playgroud)
它打印hello-1.
有人能解释为什么会有这种差异
你的第一次调用Arrays.asList实际上是返回一个List<double[]>- 它是自动装箱参数,因为a double[]不是T[]......泛型不允许原始类型作为类型参数.
如果要将a转换double[]为a List<Double>,则需要手动执行或使用第三方库执行此操作.例如:
public List<Double> toList(double[] doubles) {
List<Double> list = new ArrayList<>(doubles.length);
for (double x : doubles) {
list.add(x);
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
请注意,与Arrays.asList数组的任何后续更改不会反映在列表中,反之亦然 - 它是副本,而不是视图.
| 归档时间: |
|
| 查看次数: |
699 次 |
| 最近记录: |