我在下面的代码片段中使用了两个数组,
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));
Run Code Online (Sandbox Code Playgroud)
我的输出是
真假
我知道当我们使用Arrays.asList时,我们得到一个包装器对象,它指向现有的随机访问数组,但实际上并没有创建列表接口的对象.
我的问题是当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会正常运行.