Arrays.asList(int[]) 不工作
当我运行以下代码时,不打印任何输出。
int[] array = {3, 2, 5, 4};
if (Arrays.asList(array).contains(3))
{
System.out.println("The array contains 3");
}
当我运行以下代码时,不打印任何输出。
int[] array = {3, 2, 5, 4};
if (Arrays.asList(array).contains(3))
{
System.out.println("The array contains 3");
}
当你将一个基元数组(在你的情况下)传递给 时,它会创建一个具有单个元素的数组 - 数组本身。因此返回 false。 将返回 true。int[]
Arrays.asList
List<int[]>
contains(3)
contains(array)
如果您使用 而不是 ,它将起作用。Integer[]
int[]
Integer[] array = {3, 2, 5, 4};
if (Arrays.asList(array).contains(3))
{
System.out.println("The array contains 3");
}
进一步的解释:
的签名是 。基元不能替换泛型类型参数。因此,当您将 a 传递给此方法时,整个数组将替换,并得到一个 .另一方面,当您将 a 传递给该方法时,将替换并得到 .asList
List<T> asList(T...)
int[]
int[]
T
List<int[]>
Integer[]
Integer
T
List<Integer>
在Java 8中,你根本不需要转换数组;只需通过 将其转换为流,然后使用谓词查看所需的值是否包含在数组中。Arrays#stream
anyMatch
int[] array = {3, 2, 5, 4};
if (Arrays.stream(array).anyMatch(x -> x == 3)) {
System.out.println("The array contains 3");
}