了解比较器用法

时间:2017-05-18 09:19:05

标签: java comparator

同时查看一个简单的Comparator用法示例:

Comparator<Developer> byName = new Comparator<Developer>() {
@Override
public int compare(Developer o1, Developer o2) {
    return o1.getName().compareTo(o2.getName());
}

我无法理解这种方法声明,我之前从未见过这样的事情。

此外,我还尝试做其他事情: 我创建了一个具有实现Comparator的内部类的类:

class Test{
class A implements Comparator<Integer> {
    @Override
    public int compare(int a, int b) {
        // Do something
    }
}


class B implements Comparator<Integer> {
    @Override
    public int compare(int a, int b) {
        return  a > b ? 1 :A.compare(a, b);
    }
}
}

A.compare(a,b)没有编译。它要求我制作A并比较静态但我不会覆盖比较器类的方法比较。

另外,我想在另一个类

中使用方法A.
class C {
private int foo(){
Test.A()
}
}

它也不起作用 我该怎么做呢? 有什么建议吗?

1 个答案:

答案 0 :(得分:2)

当您使用Comparator<Something>时,您使用的是参数化类型(在这种情况下:Something)。

compare的方法签名需要与此类型匹配。

所以,试试:

public int compare(Integer a, Integer b)