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

时间:2014-12-12 19:47:08

标签: java arrays indexing selection-sort

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。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

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

您可以将nums转换为Integers

数组来解决此问题
Integer[] nums;  // instead of int[]