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

Gee*_*eek 3 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 : "
                        + Arrays.asList(GOOGLE_DIRECTION_ID_FOR_MATCH)
                                .contains(11));
Run Code Online (Sandbox Code Playgroud)

以上陈述日志:

index : -1
contains : false
Run Code Online (Sandbox Code Playgroud)

我也试过了所有其他的价值观.

Mar*_*oun 12

数组#asList返回泛型类型.

一种解决方案是将数组更改Integerint:而不是:

private static final Integer[] GOOGLE_DIRECTION_ID_FOR_MATCH = { 11, 12, 13,
            14, 15 };
Run Code Online (Sandbox Code Playgroud)

看到我找到的这个非常有用的链接.


数组#asList返回List<int[]>而不是List<Integer>(你想要什么 - 回想一下没有这样的东西List<int>).

另外,最好提一下如果int是盒装Integer,那就要小心了.因为例如:Integer(11) != 11.


Evg*_*eev 7

Arrays.asListfor int[]arg创建List<int[]>一个元素.这就是为什么包含不工作