代码:
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
我也尝试了所有其他值。
答案 0 :(得分:12)
Arrays#asList会返回通用类型。
一种解决方案是将您的数组更改为Integer
而不是int
:
private static final Integer[] GOOGLE_DIRECTION_ID_FOR_MATCH = { 11, 12, 13,
14, 15 };
请参阅此very useful link我找到了。
Arrays#asList返回List<int[]>
而不是List<Integer>
(你想要什么 - 回想一下,没有这样的事情List<int>
)。
此外,最好提一下,如果将int
装箱到Integer
,请注意..例如:Integer(11)
!= {{1} }。
答案 1 :(得分:7)
Arrays.asList
arg, int[]
会创建一个包含一个元素的List<int[]>
。这就是为什么包含不工作
答案 2 :(得分:0)
您应该使用如下
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<Integer>
,所以考虑对象
答案 3 :(得分:0)
你需要:
Arrays.asList(11, 12, 13, 14, 15)
答案 4 :(得分:0)
使用Java 8中引入的stream API的解决方案。
List<Integer> list = Arrays.stream(GOOGLE_DIRECTION_ID_FOR_MATCH)
.boxed()
.collect(Collectors.toList());
System.out.println("index: " + list.indexOf(11));
System.out.println("contains: " + list.contains(11));