关于java:当数组中存在元素时,为什么index = -1?

Why does index = -1 when the elements exist in the array?

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
8
9
10
11
12
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是我传入的数组。调用swap方法时,数组中同时存在ab,但indexAindexB返回-1。知道为什么会这样吗?


Arrays.asList是一种接受对象数组的通用方法。在这种情况下,整个int数组被视为对象,因为它的元素是原始类型int数组。因此,Arrays.asList返回的是数组列表,而不是整数列表。

您可以通过将nums转换为Integers的数组来解决此问题:

1
Integer[] nums;  // instead of int[]