为什么indexOf无法找到对象?
我创建了一个整数列表,并尝试返回特定值的索引。 数组是3,8,2,5,1,4,7,6,我想返回indexOf(3),它应该是0。
在导入java.util之后,我在Eclipse Java Scrapbook中尝试了以下内容。*:
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 l = new ArrayList(Arrays.asList(A)); l.indexOf(3)
两者都返回-1。 为什么? 如何让它按预期工作?
它应该是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'
Arrays.asList(A)
返回List
。 这是因为它需要一个对象数组,而不是基本类型。 您的选择包括:
- 使用
Integer[]
而不是int[]
- 内联arrays,让autoboxing处理它;
Arrays.asList(3,8,2,5,1,4,7,9)
可以正常工作 - 使用Guava的
Ints.asList(int...)
方法将原始数组视为List
。 (披露:我向番石榴捐款。) - 使用Guava的
Ints.indexOf(int[], int)
,它直接在原始数组上工作。
这样做吧
Integer[] array = {3,8,2,5,1,4,7,9}; List list = Arrays.asList(array); System.out.println(list.indexOf(8));
asList返回static
其中T不能是原始的(int [])。