Почему index = -1, когда элементы существуют в массиве?

public void swap(int a, int b) {                                                                                                                                                                                          
    int indexA = Arrays.asList(nums).indexOf(a);
    int indexB = Arrays.asList(nums).indexOf(b);

    nums[indexA] = b;
    nums[indexB] = a;
}
public void selectionSort() {
    int x = 0;
    findIndexOfMinAfter(0);
    swap(nums[x], nums[x + 1]);
}

int[] nums - это массив, который я передал. Когда я вызвал метод подкачки, в массиве существуют и a, и b, но indexA и indexB возвращают -1. Есть идеи, почему это так?


person laura815    schedule 12.12.2014    source источник


Ответы (1)


Arrays.asList - это общий метод, который принимает массив объектов. В этом случае весь массив int рассматривается как объект, поскольку его элементы относятся к примитивному типу int. В результате Arrays.asList возвращает список массивов вместо списка целых чисел.

Вы можете решить эту проблему, превратив nums в массив Integers:

Integer[] nums;  // instead of int[]
person M A    schedule 12.12.2014