考虑以下片段
int key1 = Arrays.asList(new int[]{1,2,3,4,5}).indexOf(5) ;//wrapper
int key2 = new ArrayList<>(Arrays.asList(new int[]{1,2,3,4,5})).indexOf(5); //another copy
但是这段代码的值为-1 -1,这意味着它没有在列表中找到键5,但为什么呢?Arrays.aslist
在列表中找不到键。谁能解释一下或快速解决在数组中搜索键的代码,而不需要显式逻辑实现。当然,我们可以对它进行排序,然后使用 Arrays.binarySearch
. 有无其他建议或其他方法可以做到这一点。
问题在于你在Array.asList(new int[]{1,2,3,4,5}.indexOf(5))里面创建的Array类型。asList()
,考虑到List类型需要非原生类型,你需要声明一下 int
作为 Integer
. 如果你把你的代码改成:
Arrays.asList(new Integer[]{1,2,3,4,5}).indexOf(5);
就可以了