当我运行以下代码时,不会打印输出.
int[] array = {3, 2, 5, 4};
if (Arrays.asList(array).contains(3))
{
System.out.println("The array contains 3");
}
Run Code Online (Sandbox Code Playgroud)
Era*_*ran 54
当您将一个基元数组(int[]
在您的情况下)传递给Arrays.asList
它时,它会创建一个List<int[]>
包含单个元素的数组 - 数组本身.因此contains(3)
返回false.contains(array)
会回归真实.
如果您将使用Integer[]
而不是int[]
,它将起作用.
Integer[] array = {3, 2, 5, 4};
if (Arrays.asList(array).contains(3))
{
System.out.println("The array contains 3");
}
Run Code Online (Sandbox Code Playgroud)
进一步解释:
签名asList
是List<T> asList(T...)
.基元不能替换泛型类型参数.因此,当您传递给此方法时int[]
,整个int[]
数组将替换T
并获得一个List<int[]>
.另一方面,当您传递Integer[]
给该方法时,Integer
替换T
并获得一个List<Integer>
.
Mak*_*oto 17
在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");
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8106 次 |
最近记录: |