Why is indexOf failing to find the object?

前端 未结 3 399
一生所求
一生所求 2020-12-02 20:46

I created an integer list and am trying to return the index of a specific value. The array is 3,8,2,5,1,4,7,6 and I want to return the indexOf(3), which should be 0.

相关标签:
3条回答
  • 2020-12-02 20:53

    It should be Integer[] not int[] in order to make it work.

    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'
    
    0 讨论(0)
  • 2020-12-02 20:56

    Do it this way

    Integer[] array = {3,8,2,5,1,4,7,9};
    List<Integer> list = Arrays.asList(array);
    
    System.out.println(list.indexOf(8));
    

    asList returns static <T> List<T> Where T cannot be primitive (int[]).

    0 讨论(0)
  • 2020-12-02 21:01

    Arrays.asList(A) returns a List<int[]>. This is because it expects an array of objects, not primitive types. Your options include:

    • use Integer[] instead of int[]
    • inline the array, and let autoboxing take care of it; Arrays.asList(3,8,2,5,1,4,7,9) will work fine
    • use Guava's Ints.asList(int...) method to view the primitive array as a List<Integer>. (Disclosure: I contribute to Guava.)
    • use Guava's Ints.indexOf(int[], int), which works directly on primitive arrays.
    0 讨论(0)
提交回复
热议问题