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

时间:2018-02-20 11:40:31

标签: 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));

2 个答案:

答案 0 :(得分:4)

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

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

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

这就是为什么你的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);

打印索引1。

要了解包装/展开数组,您可以在此处阅读更多内容Converting Array of Primitives to Array of Containers in Java,但在这种情况下,将int[]更改为Integer[]最简单(API不会强制您接受{{} 1}})。

答案 1 :(得分:0)

在您的代码中

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

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

因为indexOf期望object类型,因为它是原始类型,它返回-1(-1表示未找到)