Ответ 1
Он должен быть Integer [] not 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'
Я создал целочисленный список и пытаюсь вернуть индекс определенного значения. Массив 3,8,2,5,1,4,7,6, и я хочу вернуть indexOf (3), который должен быть 0.
Я попробовал следующее в заставке Java Eclipse после импорта java.util. *:
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. Зачем? Как заставить это работать так, как ожидалось?
Он должен быть Integer [] not 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'
Arrays.asList(A)
возвращает a List<int[]>
. Это связано с тем, что он ожидает массив объектов, а не примитивных типов. Ваши варианты включают:
Integer[]
вместо int[]
Arrays.asList(3,8,2,5,1,4,7,9)
будет работать нормальноInts.asList(int...)
, чтобы просмотреть примитивный массив как List<Integer>
. (Раскрытие информации: я вношу свой вклад в Гуаву.)Ints.indexOf(int[], int)
, который работает непосредственно на примитивных массивах.Сделайте это так
Integer[] array = {3,8,2,5,1,4,7,9};
List<Integer> list = Arrays.asList(array);
System.out.println(list.indexOf(8));
asList возвращает static <T> List<T>
Где T не может быть примитивным (int []).