【问题标题】:Compare values of <Key, Value> Pairs and sort them比较 <Key, Value> 对的值并对其进行排序
【发布时间】:2015-06-30 06:48:01
【问题描述】:

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

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

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());
    }
}

【问题讨论】:

  • 听起来你并不真正了解 static 关键字的作用。这应该是你的第一步。
  • 某些代码似乎丢失了。你从哪里得到“错误”?
  • @Gana,我不确定我是否理解了这个问题:你的意思是如果我将比较方法更改为静态,它将不起作用?
  • 我们可以不使用大写字母吗?
  • 别担心,伙计们我已经修好了。通过从类中删除工具 Comparator 解决了这个问题。

标签: java algorithm sorting compare keyvaluepair


【解决方案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'关键字以及它的作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 2012-07-23
    • 2018-10-27
    • 2014-12-11
    • 2016-10-04
    • 1970-01-01
    • 2019-11-22
    相关资源
    最近更新 更多