5

java.util.Comparatorwithを実装したいLong

new Comparator<Long>() {
    public int compare(Long l1, Long l2) {
        // (*)
    }
}

私は operator を使った解決策を持っています?::

return l1==l2 ? 0 : (l1>l2 ? 1 : -1);

しかし、それを実装する他の方法があるかどうか疑問に思います。

(私はしようとreturn (int)(l1-l2)していましたが、それは間違っています)。

4

2 に答える 2

12

それは簡単です -Longそれ自体が実装を提供します:

public int compare(Long l1, Long l2) {
    return l1.compareTo(l2);   
}

一方、その時点では、なぜカスタムコンパレーターを持っているのかまったくわかりません...

編集:実際に値を比較longしていて、Java 1.7 を使用している場合は、Long.compare(long, long). それ以外の場合は、現在の実装を使用してください。

于 2012-04-11T13:16:42.173 に答える
2

いいえ、それが有効な唯一の方法です。このトピックはすでに何度も議論されています。もちろん、java.lang.LongすでにcompareTo関数を実装していますが、実装はまったく同じです。

于 2012-04-11T13:16:25.797 に答える