为什么indexOf无法找到对象?

ris*_*raj 32 java 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)
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

int[] A = {3,8,2,5,1,4,7,6};
ArrayList<Integer> l = new ArrayList(Arrays.asList(A));
l.indexOf(3)
Run Code Online (Sandbox Code Playgroud)

两者都返回-1.为什么?如何让它按预期工作?

Lou*_*man 34

Arrays.asList(A)返回一个List<int[]>.这是因为它需要一个对象数组,而不是基本类型.您的选择包括:

  • Integer[]而不是int[]
  • 内联阵列,让自动装箱处理它; Arrays.asList(3,8,2,5,1,4,7,9)会很好的
  • 使用Guava的 Ints.asList(int...)方法将原始数组视为a List<Integer>.(披露:我向番石榴捐款.)
  • 使用Guava Ints.indexOf(int[], int),它直接在原始数组上工作.


Eug*_*sky 26

它应该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'
Run Code Online (Sandbox Code Playgroud)