当我运行以下代码时,没有输出任何输出。
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)
返回假。 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>
.
关于java - Arrays.asList(int[]) 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31422025/