英文:
Arrays.asList(arr).indexOf is not working
问题
考虑以下代码片段:
int key1 = Arrays.asList(new int[]{1,2,3,4,5}).indexOf(5); //包装器
int key2 = new ArrayList<Integer>(Arrays.asList(new int[]{1,2,3,4,5})).indexOf(5); //另一个副本
但是这个代码片段的评估结果是 -1 -1,这意味着它在列表中没有找到关键字 5。
但是为什么 Arrays.aslist
在列表中找不到关键字呢?有人可以解释一下或者快速修复代码,以在不需要显式逻辑实现的情况下在数组中搜索关键字。当然,我们可以对其进行排序,然后使用 Arrays.binarySearch
。还有其他建议或其他方法来实现这一点。
英文:
Consider the following snippet
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
But this snippet evaluates to -1 -1 which means It did not find the key 5 in the list.
But why Arrays.aslist
not finding the key in list. Can anyone please explain or quick fix to code for Searching key in array without explicit logic implementation. Of course we can sort it then use Arrays.binarySearch
. Any other suggestions or any other ways to do this.
答案1
得分: 0
问题在于您在asList()
内部创建的数组类型,考虑到列表类型需要非基本类型,您需要将int
声明为Integer
。如果您将代码更改为:
Arrays.asList(new Integer[]{1,2,3,4,5}).indexOf(5);
它将起作用。
英文:
The problem is the type of Array you're creating inside the asList()
, Considering that the List types require non-primitive types, you need to declare int
as Integer
. If you change your code to:
Arrays.asList(new Integer[]{1,2,3,4,5}).indexOf(5);
It will work.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论