为什么 indexOf 找不到对象?

2022-09-01 09:32:40

我创建了一个整数列表,并尝试返回特定值的索引。数组是 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<Integer> l = new ArrayList(Arrays.asList(A));
l.indexOf(3)

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


答案 1

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

  • 使用而不是Integer[]int[]
  • 内联数组,并让自动装箱来处理它; 将正常工作Arrays.asList(3,8,2,5,1,4,7,9)
  • 使用 Guava 的 Ints.asList(int...) 方法将基元数组视为 .(披露:我为番石榴做出贡献。List<Integer>
  • 使用番石榴的,它直接在原始数组上工作。Ints.indexOf(int[], int)

答案 2

它不应该是为了让它工作。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'