当前位置: 首页 > 面试题库 >

自定义排序Java数组

相温文
2023-03-14
问题内容

我有一个[],其中有一些数字(距离某个点的距离)。
我想在第一个数组中创建索引数组,其中索引按距离排序。

例如

假设double[] dist=new double[5] {3.2, 1.4, 7.3, 2.2, 9.1};
那我想得到一个像这样的数组:

int[] sortedIndexes=new int[5] {1, 3, 0, 2, 4};

因此,如果要第二近距离,可以检查dist [sortedIndexes [1]]。
我不想对原始数组进行排序,而只是根据距离对索引数组进行排序。

更新1:我正在尝试的代码如下所示:

Collections.sort(sortedIDXs, new Comparator<Integer>() {
    public int compare(int idx1, int idx2) {
        return Double.compare(distances[idx1], distances[idx2]);
    }
});

但是我遇到了一些错误,其中最“有问题”的是:“ 无法引用用不同方法定义的内部类内部的非最终变量距离

谢谢


问题答案:

您走在正确的道路上,但是

  • 如果您使用的是泛型,那么使用Integer数组比使用int数组要好Comparator<Integer>
  • 你必须使用Arrays.sort,而不是Collections.sort用于排序的数组。
  • 如果在匿名内部类中引用了distances变量,则必须将其定为final。
    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]);
    }
    });



 类似资料:
  • 问题内容: 我有这样的查询: 但是,当我打印出来时,它会自动进行1,2,3,4,5的排序。我们如何在不更改数据库结构的情况下保持顺序(2,4,1,5,3)? 谢谢! 问题答案: 我问这个: mysql按问题排序 我得到的答案和所有功劳归于他们: 您可以使用CASE运算符指定顺序: 在PHP中,你可以像这样:

  • 问题内容: 我有一个问题:这是由ElementTree库形成的列表列表。 word1..4可能包含Unicode字符,即(â,ü,ç)。 我想按我的自定义字母对列表列表进行排序。 我知道如何从这里按python中的单词对自定义字母进行排序 我也知道如何从此处http://wiki.python.org/moin/HowTo/Sorting按键排序 问题是我找不到如何应用这两种方法对“列表列表”进行

  • 有的时候我们希望排序不是仅仅按照自然顺序排序。例如,我们希望按照字符串的长度来对一个字符串数组排序而不是按照字母顺序来排序。这里我们介绍一下Go的自定义排序。 package main import "sort" import "fmt" // 为了能够使用自定义函数来排序,我们需要一个 // 对应的排序类型,比如这里我们为内置的字符串 // 数组定义了一个别名ByLength type ByLe

  • 本文向大家介绍JavaScript自定义数组排序方法,包括了JavaScript自定义数组排序方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript自定义数组排序方法。分享给大家供大家参考。具体分析如下: Array中有自带的排序功能,这个使用起来比较方便,我们有一点必须清楚,就是排序的依据,如果sort不传入参数的话,那就是按照字符编码(Unicode编码)的顺序排序。

  • 这段代码的输出是:周一周二周三周四周五周六周日 但是我想要的输出是这样的SUN MON TUE WED THU FRI SAT 这意味着我想定制排序功能,将星期天移到第一天。 我该怎么做?提前谢谢。

  • 问题内容: 我想为汽车清单开发一个排序演示。我正在使用数据表显示汽车列表。现在实际上我想按汽车颜色对列表进行排序。这里不是按字母顺序排序的。我想使用我的自定义排序顺序,例如先是红色汽车,然后是蓝色,等等。 为此,我尝试使用,但它只允许按字母顺序排序。 因此,任何人都可以指导我实现使用该技术的方法,以便使排序变得更快。 问题答案: 我建议你为汽车颜色创建一个枚举,而不要使用字符串,并且枚举的自然顺序