Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is indexOf failing to find the object?

Tags:

java

indexof

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.

I've tried the following in the Eclipse Java Scrapbook after importing java.util.*:

int[] A = {3,8,2,5,1,4,7,9}; Arrays.asList(A).indexOf(3) 

I have also tried:

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

Both are returning -1. Why? How to get this to work as expected?

like image 930
rishimaharaj Avatar asked Apr 02 '12 18:04

rishimaharaj


Video Answer


2 Answers

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.
like image 110
Louis Wasserman Avatar answered Oct 01 '22 18:10

Louis Wasserman


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' 
like image 44
Eugene Retunsky Avatar answered Oct 01 '22 20:10

Eugene Retunsky