This question already has answers here:
Convert Java Array to Iterable

(10个答案)



Arrays.asList() not working as it should?

(10个答案)


4年前关闭。




当我运行以下代码时,没有输出输出。
int[] array = {3, 2, 5, 4};

if (Arrays.asList(array).contains(3))
{
    System.out.println("The array contains 3");
}

最佳答案

当您将基元数组(在您的情况下为int[])传递给Arrays.asList时,它将创建带有单个元素的List<int[]>-数组本身。因此,contains(3)返回false。 contains(array)将返回true。

如果您将使用Integer[]而不是int[],它将起作用。

Integer[] array = {3, 2, 5, 4};

if (Arrays.asList(array).contains(3))
{
  System.out.println("The array contains 3");
}

进一步说明:
asList的签名是List<T> asList(T...)。基元不能替换泛型类型参数。因此,当您将此方法传递给int[]时,整个int[]数组将替换T,您将获得List<int[]>。另一方面,当您将Integer[]传递给该方法时,Integer会替换T,您会得到List<Integer>

10-08 15:58