我有我想排序的对。我已经完成了比较实现,它似乎正在工作。
我也在网上看到了一个解决方案,但问题是它不允许它是静态的。
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());
}
}
您可能将比较称为
compare(pair1,pair2);
对 1 和对 2 是静态的,不进行比较。将静态字段传递给函数时,该函数也必须是静态的。这就是您接受此错误的原因。
您可以通过将比较方法更改为来解决此问题;
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);
但是你应该看看什么是"静态"关键字以及它的作用。