Arrays.asList(arrayname).contains(int)不起作用

时间:2015-10-29 12:53:47

标签: java

int[] AllCards = {1,2,3,4,5,6,7,8,9,10};

if(Arrays.asList(AllCards).contains(1))
    System.out.println("yes");
else {
    System.out.println("no");
}

我有这段代码,它只是继续打印no而不是yes。有什么问题?

4 个答案:

答案 0 :(得分:1)

Integer[] AllCards = {1,2,3,4,5,6,7,8,9,10};

if(Arrays.asList(AllCards).contains(1))
    System.out.println("yes");
else {
    System.out.println("no");
}

了解为何选中此问题:https://stackoverflow.com/a/1467940/4088809

答案 1 :(得分:0)

问题是1被自动装箱为Integer而不是int

将声明更改为Integer[]

答案 2 :(得分:0)

由于AllCards是一个int数组,因此调用Arrays.asList(AllCards)会返回一个包含单个元素的List,即AllCards

如果您不想将AllCards更改为Integer数组,可以编写以下内容以测试其是否包含1:

boolean containsOne = Arrays.stream(AllCards).anyMatch(n -> n == 1);

答案 3 :(得分:0)

:更改为int

Integer

在Java中,' int' type是一个原语,而' Integer' type是一个对象。

这意味着,如果您想将Integer[] AllCards = {1,2,3,4,5,6,7,8,9,10}; if(Arrays.asList(AllCards).contains(1)) System.out.println("yes"); else { System.out.println("no"); } 转换为array类型,则需要对象,因为您无法将基元类型保存到List中。