custom sorting a java array

前端 未结 4 966
长情又很酷
长情又很酷 2021-01-06 03:41

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.

4条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-01-06 04:32

    You're on the right track, but

    • You're better off with an Integer array than an int array if you're using a generic Comparator.
    • You have to use Arrays.sort instead Collections.sort for sorting an array.
    • You have to make the distances variable final if it's referenced in an anonymous inner class.

      final double[] distances=new double[]{3.2, 1.4, 7.3, 2.2, 9.1};
      Integer[] sortedIDXs  = new Integer[]{0,1,2,3,4};
      Arrays.sort(sortedIDXs, new Comparator() {
          public int compare(Integer idx1, Integer idx2) {
              return Double.compare(distances[idx1], distances[idx2]);
          }
      });
      

提交回复
热议问题