Arrays.asList()。包括()给出错误的结果 [英] Arrays.asList().contains() giving wrong result
问题描述
code:
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
我尝试过所有其他值。
I tried for all other values too.
推荐答案
<一个href=\"http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList%28T...%29\">Arrays#asList返回的通用的类型。
解决方案之一是阵列更改为整数
而不是 INT
:
One solution is to change your array to Integer
instead of int
:
private static final Integer[] GOOGLE_DIRECTION_ID_FOR_MATCH = { 11, 12, 13,
14, 15 };
请参阅此<一个href=\"http://mlangc.word$p$pss.com/2010/05/01/be-carefull-when-converting-java-arrays-to-lists/\">very有用的链接我找到了。
<一个href=\"http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList%28T...%29\">Arrays#asList返回列表&LT; INT []&GT;
,而不是列表&LT;整数GT;
(你想要什么 - 回想一下,有没有这样的事情列表与LT; INT&GT;
)。搜索结果
此外,这是很好的一提的是,如果一个 INT
是盒装为整数
,那么要小心。因为例如: 整数(11)
!= 11
。
Arrays#asList returns List<int[]>
and not List<Integer>
(What you wanted - Recall that there is no such a thing List<int>
).
Also, it's good to mention that if an int
is boxed to Integer
, then be careful.. Because for example: Integer(11)
!= 11
.
这篇关于Arrays.asList()。包括()给出错误的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!