Java で Comparator インターフェイスを利用する場合、Comparator を実装するクラスが適切に定義されていない場合、エラーが発生する可能性があります。
提供されたコード スニペットでは、Comparator は People クラスに実装されています。ただし、この問題は、People クラスも Comparable インターフェイスを実装しているという事実に起因しています。両方のインターフェースに Compare メソッドの実装が必要なため、これにより競合が発生します。
このエラーを解決するには、People` クラス宣言で Comparator インターフェースのジェネリック型を指定する必要があります。正しい構文は次のとおりです:
public class People implements Comparator<People> { ... }
さらに、People クラスの比較メソッドは、任意のオブジェクトではなく People オブジェクトを比較するように変更する必要があります。
public int compare(People p1, People p2) { Integer p1Id = p1.getId(); Integer p2Id = p2.getId(); if (p1Id > p2Id) { return 1; } else if (p1Id < p2Id) { return -1; } else { return 0; } }
これで、コードは正常に実行されます。 People オブジェクトを ID に基づいて並べ替えます。
Comparator インターフェイスは、オブジェクトを並べ替えるための Comparable インターフェイスの代替手段を提供します。 Comparator インターフェイスを実装する別のクラスを渡すことで、並べ替え基準をより柔軟に定義できます。
クラスで Comparator を初期化するには、次の手順に従います。
Comparator インターフェイスを実装し、 Compare メソッド内の並べ替えロジック。
Comparator のインスタンスを Collections クラスの sort メソッドに渡して、次のリストを並べ替えます。
このアプローチにより、より複雑な並べ替え基準が可能になり、匿名クラスやラムダ式を操作するときに役立ちます。
以上がクラスが Comparable も実装している場合のコンパレータ実装エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。