首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arrays.asList工作

Arrays.asList工作
EN

Stack Overflow用户
提问于 2015-04-04 12:37:48
回答 2查看 885关注 0票数 4

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

代码语言:javascript
复制
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。

EN

回答 2

Stack Overflow用户

发布于 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将按预期工作。

票数 7
EN

Stack Overflow用户

发布于 2015-04-04 14:24:12

而不是

代码语言:javascript
复制
int[] a1 ={1,2,3,4,5};
System.out.println(Arrays.asList(a1).contains(3));

您可以使用:

代码语言:javascript
复制
System.out.println(Arrays.asList(1, 2, 3, 4, 5).contains(3));

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29442759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档