我在下面的代码片段中使用了两个数组,
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时,我们会得到一个包装器对象,它指向现有的数组进行随机访问,但在真正意义上并没有创建list接口的对象。
我这里的问题是,当包含方法对string有效时,为什么它不适用于int。
发布于 2015-04-04 12:39:17
整数数组(或任何原始数组类似)的Arrays.asList会生成一个List<int[]>,它的单个元素就是该整数数组。这就是为什么contains(3)返回false (System.out.println(Arrays.asList(a1).contains(a1));将返回true)。
如果您为Integer数组调用Arrays.asList,您将获得一个List<Integer>,contains将按预期工作。
发布于 2015-04-04 14:24:12
而不是
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)ㄧ,即它接受一个变量,因此不需要显式创建数组。构造函数将负责自动装箱。
https://stackoverflow.com/questions/29442759
复制相似问题