比较<key,value =“”>对的值并对它们进行排序

时间:2015-04-22 14:19:25

标签: java algorithm sorting compare keyvaluepair

我有对,我想排序。我已经完成了比较实现,它似乎正在工作。

我也在网上看到了一个解决方案,但问题是它不允许它是静态的。

public static ArrayList <Pair<Integer, Integer>> pairList = new ArrayList<Pair<Integer, Integer>>();    

public static Pair<Integer, Integer> pair1 = new Pair<>(6, 7);
public static Pair<Integer, Integer> pair2 = new Pair<>(7, 7)

我正在使用我正在测试的解决方案获取错误Change compare() to static

我正在测试的方法:

public  class MachineNoComparator implements Comparator <Pair<Integer, Integer>> {
    public int compare(Pair<Integer, Integer> o1, Pair<Integer, Integer> o2) {
        return o1.getMachineNo().compareTo(o2.getMachineNo());
    }
}

1 个答案:

答案 0 :(得分:-1)

您可能将比较称为

compare(pair1,pair2);

pair1和pair2是静态的,不比较。将静态字段传递给函数时,该函数也必须是静态的。这就是你犯这个错误的原因。

您可以通过将比较方法更改为;

来解决此问题
public static int compare(Pair<Integer, Integer> o1, Pair<Integer, Integer> o2) {
    return o1.getMachineNo().compareTo(o2.getMachineNo());
}

或字段到;

public Pair<Integer, Integer> pair1 = new Pair<>(6, 7);
public Pair<Integer, Integer> pair2 = new Pair<>(7, 7);

但你应该看看'static'关键字是什么以及它做了什么。