9

を作っているTreeMap<String, String>ので、降順で注文したいと思います。次のコンパレータを作成しました。

Comparator<String> descender = new Comparator<String>() {

    @Override
    public int compare(String o1, String o2) {
        return o2.compareTo(o1);
    }
};

TreeMapは次のように作成します。

myMap = new TreeMap<String, String>(descender);

ただし、次のエラーが発生します。

The method compare(String, String) of type new Comparator<String>(){} must override a superclass method

ジェネリック医薬品を完全に開発したことはありませんが、何が間違っているのでしょうか。

4

3 に答える 3

19

Eclipseプロジェクトは明らかにJava1.5に設定されています。その場合、@Overrideアノテーションは実際にはインターフェースメソッドではサポートされません。そのアノテーションを削除するか、プロジェクトのコンプライアンスレベルをJava1.6に修正してください。

于 2011-08-28T20:17:38.333 に答える
7

Comparator自然な(昇順の)順序を逆にしたいだけの場合は、カスタムを作成する必要はありません。

降順を取得するには、次を使用します。

myMap = new TreeMap<String, String>(java.util.Collections.reverseOrder());
于 2011-08-28T20:17:12.803 に答える
1

ああ、私は問題を見つけました。Comparableの新しい匿名インスタンスをインスタンス化するとき、私はインターフェイスメソッドをオーバーライドしていません...私はそれらを実装しています。@Overrideディレクティブが問題でした。compare()メソッドは、既存のメソッドをオーバーライドするのではなく、インターフェイスの一部を実装していました。そのコードを別の場所からコピーしましたが、@Overrideがないはずです。

于 2011-08-28T20:12:21.850 に答える