为什么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 List其中T不能是原始的(int [])。