Arrays.asList有效

时间:2015-04-04 04:37:48

标签: java arrays

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

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时,我们得到一个包装器对象,该对象指向用于随机访问的现有数组,但在真正意义上,不会创建列表接口的对象。

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

2 个答案:

答案 0 :(得分:6)

Arrays.asList对于int数组(或者对于任何基本数组类似)产生List<int[]>,其单个元素是int数组。这就是为什么contains(3)返回false(System.out.println(Arrays.asList(a1).contains(a1));将返回true)的原因。

如果您为Arrays.asList数组拨打Integer,我们将List<Integer> contains {{1}}按预期工作。

答案 1 :(得分: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));

asList()的签名是asList(T... a)ㄧ,即它需要vararg,因此不需要显式数组创建。构造函数将负责自动装箱。