Search code examples
javaarraysindexingselection-sort

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


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 is an array I passed in. When I called the swap method, both a and b exist in the array but indexA and indexB return -1. Any idea why it does that?


Solution

  • Arrays.asList is a generic method that takes an array of objects. In this case, the entire int array is considered as an object because its elements are of the primitive type int. As a result, Arrays.asList is returning a list of arrays instead of a list of integers.

    You can solve this by turning nums into an array of Integers:

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