This question already has answers here:
Arrays.asList() not working as it should?

(11 个回答)


6年前关闭。




我在下面的代码片段中采用了两个数组,
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));

我的输出是

真的
错误的

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

我的问题是当 contains 方法适用于字符串时,为什么它不适用于 int。

最佳答案

Arrays.asList 用于 int 数组(或类似地用于任何原始数组)生成一个 List<int[]>,其单个元素是该 int 数组。这就是为什么 contains(3) 返回 false ( System.out.println(Arrays.asList(a1).contains(a1)); 将返回 true)。

如果您为 Arrays.asList 数组调用 Integer,您将获得 List<Integer> contains 将按预期工作。

10-08 01:28