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方法时,a
和b
都存在于数组中,indexA
和indexB
返回-1
。知道为什么会这样吗?
答案 0 :(得分:1)
Arrays.asList
是一个采用对象数组的通用方法。在这种情况下,整个int
数组被视为一个对象,因为它的元素是基本类型int
。因此,Arrays.asList
返回一个数组列表而不是整数列表。
您可以将nums
转换为Integers
:
Integer[] nums; // instead of int[]