Arrays.asList的作用

4

在下面的代码片段中,我用了两个数组:

String[] things = {"a", "b", "c", "d", "e", "f"};
int[] a1 ={1,2,3,4,5};
System.out.println(Arrays.asList(things).contains("c"));
System.out.println(Arrays.asList(a1).contains(3));

我的输出结果是

true false

我知道当我们使用Arrays.asList时,我们得到一个包装器对象,该对象指向现有数组以进行随机访问,但实际上并没有创建List接口的对象。

我的问题是,为什么contains方法适用于字符串,而不适用于整数。

2个回答

7
Arrays.asList用于int数组(或任何原始类型数组)会产生一个List<int[]>,其中唯一的元素是该int数组。这就是为什么contains(3)返回false的原因(System.out.println(Arrays.asList(a1).contains(a1));将返回true)。
如果您针对Integer数组调用Arrays.asList,则会得到一个List<Integer>,并且contains将按预期工作。

0

不要使用

int[] a1 ={1,2,3,4,5};
System.out.println(Arrays.asList(a1).contains(3));

您可以使用以下代码:

System.out.println(Arrays.asList(1, 2, 3, 4, 5).contains(3));
< p > asList() 的签名是 asList(T... a),即它接受一个可变参数,因此不需要显式地创建数组。构造函数会处理自动装箱。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接