Java 为什么indexOf找不到对象?
我创建了一个整数列表,并试图返回特定值的索引。 数组是3,8,2,5,1,4,7,6,我想返回indexOf(3),它应该是0 在导入Java.util.*之后,我在Eclipse Java剪贴簿中尝试了以下内容:Java 为什么indexOf找不到对象?,java,indexof,Java,Indexof,我创建了一个整数列表,并试图返回特定值的索引。 数组是3,8,2,5,1,4,7,6,我想返回indexOf(3),它应该是0 在导入Java.util.*之后,我在Eclipse Java剪贴簿中尝试了以下内容: int[] A = {3,8,2,5,1,4,7,9}; Arrays.asList(A).indexOf(3) 我也尝试过: int[] A = {3,8,2,5,1,4,7,6}; ArrayList<Integer> l = new ArrayList(Array
int[] A = {3,8,2,5,1,4,7,9};
Arrays.asList(A).indexOf(3)
我也尝试过:
int[] A = {3,8,2,5,1,4,7,6};
ArrayList<Integer> l = new ArrayList(Arrays.asList(A));
l.indexOf(3)
int[]A={3,8,2,5,1,4,7,6};
ArrayList l=新的ArrayList(Arrays.asList(A));
l、 索引of(3)
两者都返回-1。为什么?如何使其按预期工作?数组。asList(A)
返回一个列表。这是因为它需要的是对象数组,而不是基元类型。你的选择包括:
- 使用
Integer[]
代替int[]
- 内联数组,让自动装箱处理它<代码>数组。asList(3,8,2,5,1,4,7,9)
可以正常工作
列表
。(披露:我为番石榴捐款。)Ints.indexOf(int[],int)
,它直接作用于基本数组它应该是
Integer[]
而不是int[]
才能工作
Integer[] A = {3,8,2,5,1,4,7,9};
final int i = Arrays.asList(A).indexOf(3);
System.out.println("i = " + i); // prints '0'
这样做
Integer[] array = {3,8,2,5,1,4,7,9};
List<Integer> list = Arrays.asList(array);
System.out.println(list.indexOf(8));
Integer[]数组={3,8,2,5,1,4,7,9};
列表=数组。asList(数组);
System.out.println(list.indexOf(8));
asList返回
静态列表
其中T不能是基元(int[])。谢谢大家的回答。不过,有了这个更改,我将不得不更改我的数据结构,因此我将使用binarySearch方法,因为它适用于int[]数组。请注意,这只适用于排序的int[]
数组,而您描述的示例并不是。@LouisWasserman我没有得到您的评论和它得到的支持票indexOf
“返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回-1。”-那么为什么它不适用于任意数组?@arekolek我指的是@rishimaharaj在我的注释上方的注释,描述使用binarySearch
的计划。如果有多个数据,如数据中有多个3,如何获取位置列表?