I have an [] that has some numbers (distances from some point).
I want to create an array of indexes into the first array where the indexes are sorted by the distance.
e.g.
suppose double[] dist=new double[5] {3.2, 1.4, 7.3, 2.2, 9.1};
then I want to get an array like this:
int[] sortedIndexes=new int[5] {1, 3, 0, 2, 4};
so if I want the second nearest distance I can check dist[sortedIndexes[1]].
I don’t want to sort the original array, just the array of indexes based on the distances.
UPDATE 1:
The Code I was trying looks like this:
Collections.sort(sortedIDXs, new Comparator<Integer>() {
public int compare(int idx1, int idx2) {
return Double.compare(distances[idx1], distances[idx2]);
}
});
But I am getting several errors with it with the most “problematic” one being:
“Cannot refer to a non-final variable distances inside an inner class defined in a different method“
Thanks
You’re on the right track, but
Integerarray than anintarray if you’re using a genericComparator<Integer>.Arrays.sortinsteadCollections.sortfor sorting an array.You have to make the distances variable final if it’s referenced in an anonymous inner class.