如何在java中找到数组的索引

kri*_*eer 1 java arrays arraylist

我正在尝试使用此功能,但它给出的索引为 -1。那我能做什么

int[] veer = {14,25,14,56,15,36,56,77,18,29,49};

int a = Arrays.asList(veer).indexOf(14);

System.out.println("my array at position 14 is :" + (a));
Run Code Online (Sandbox Code Playgroud)

Bet*_*sta 7

我假设,您想学习/测试indexOf正在做什么。问题是,那Arrays.asList(veer)返回包含一个元素的列表 - 整个数组。

当我将代码拆分为多行时,它正在执行以下操作:

    int[] orig = {14,25,14,56,15,36,56,77,18,29,49};
    List<int[]> origList = Arrays.asList(orig);
Run Code Online (Sandbox Code Playgroud)

这就是为什么,您的 indexOf 无法在列表中找到 14,因为简单地说,列表中没有整数。

当您使用包装器类型时,它会按您的预期工作

    Integer[] veer = {14,25,14,56,15,36,56,77,18,29,49};
    List<Integer> list = Arrays.asList(veer);
    int a = list.indexOf(25); // I changed to 25
    System.out.println("my array at position 25 is :" + a);
Run Code Online (Sandbox Code Playgroud)

打印索引 1。

要了解包装/展开阵列,你可以在这里阅读更多转换原语的数组在Java容器的阵列而改变int[],以Integer[]在这种情况下,(你是不是通过API被迫接受简单int[])。

  • 我希望反对者让我知道他们不同意什么! (2认同)