Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Arrays.asList().contains()给出错误的结果_Java_Arrays_List - Fatal编程技术网

Java Arrays.asList().contains()给出错误的结果

Java Arrays.asList().contains()给出错误的结果,java,arrays,list,Java,Arrays,List,代码: private static final int[] GOOGLE_DIRECTION_ID_FOR_MATCH = { 11, 12, 13, 14, 15 }; Log.e(TAG, "index : " + Arrays.asList(GOOGLE_DIRECTION_ID_FOR_MATCH).indexOf(11)); Log.e(TAG, "contains : "

代码:

private static final int[] GOOGLE_DIRECTION_ID_FOR_MATCH = { 11, 12, 13,
            14, 15 };
Log.e(TAG, "index : "
                        + Arrays.asList(GOOGLE_DIRECTION_ID_FOR_MATCH).indexOf(11));

Log.e(TAG, "contains : "
                        + Arrays.asList(GOOGLE_DIRECTION_ID_FOR_MATCH)
                                .contains(11));
上述声明记录:

index : -1
contains : false
我也尝试了所有其他值。

返回泛型类型

一种解决方案是将数组更改为
Integer
,而不是
int

private static final Integer[] GOOGLE_DIRECTION_ID_FOR_MATCH = { 11, 12, 13,
            14, 15 };
看看我找到的这个


返回
列表
而不是
列表
(您想要的-回想一下,没有这样的东西
列表



另外,值得一提的是,如果
int
被装箱为
Integer
,那么要小心。。因为例如:
整数(11)
=
11

您应该按如下方式使用

   Integer[] GOOGLE_DIRECTION_ID_FOR_MATCH = { 11, 12, 13,14, 15 };
   System.out.println((Arrays.asList(GOOGLE_DIRECTION_ID_FOR_MATCH)).indexOf(11));
   System.out.println((Arrays.asList(GOOGLE_DIRECTION_ID_FOR_MATCH)).contains(11));

既然我们定义了<代码> list <代码>,请考虑对象

<代码>数组。aslist <代码> > <代码> int []/COD> >用一个元素创建<代码>列表>代码>。这就是为什么包含不起作用的原因

您需要:

Arrays.asList(11, 12, 13, 14, 15)
使用Java 8中引入的解决方案

List List=Arrays.stream(GOOGLE\u DIRECTION\u ID\u用于匹配)
.boxed()
.collect(Collectors.toList());
System.out.println(“索引:+list.indexOf(11));
System.out.println(“包含:”+list.contains(11));

在他的情况下,不应该
11
自动装箱吗?这将有什么帮助。你能解释一下吗?如果他使用的是Java5或更高版本,自动装箱应该解决这个问题。@Ankur
int[]
不会自动装箱到
Integer[]
。只有
int
可以自动装箱到
Integer
。否。自动装箱无法解决此问题。看Evgeniy Dorofev的回答谢谢@Marounnaroun。是的,我明白了。:-)