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方法时,数组中同时存在a和b,但indexA和indexB返回-1。知道为什么会这样吗?
Arrays.asList是一种接受对象数组的通用方法。在这种情况下,整个int数组被视为对象,因为它的元素是原始类型int数组。因此,Arrays.asList返回的是数组列表,而不是整数列表。
您可以通过将nums转换为Integers的数组来解决此问题:
1
| Integer[] nums ; // instead of int[] |