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或更高版本,自动装箱应该解决这个问题。@Ankurint[]
不会自动装箱到Integer[]
。只有int
可以自动装箱到Integer
。否。自动装箱无法解决此问题。看Evgeniy Dorofev的回答谢谢@Marounnaroun。是的,我明白了。:-)