我在下面的代码片段中使用了两个数组
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。
答案 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,因此不需要显式数组创建。构造函数将负责自动装箱。