1

2つのListNode値を比較して、ListNode o1.value> ListNode o2.valueの場合は1を返し、等しい場合は0を返し、より小さい場合は-1を返すにはどうすればよいですか。

私は現在このコンパレータを持っていますが、抽象メソッドが実装されていないというエラーがあります。また、以下の例のような値で正しく比較されるかどうかもわかりません。

'd'を追加します。'b'を追加します。'e'を追加

b-> d-> e

private Comparator<? super E> priorityComparator = new Comparator<E>(){ 
  public int compare(ListNode<E> o1, ListNode<E> o2) {
     String i1 = o1.value.toString();
     String i2 = o2.value.toString();
        return i1.compareTo(i2);
    }};

このコンパレータを正しく実装して、2つのListNodeオブジェクトを取得し、それらの間のint値の比較を返すにはどうすればよいですか?

4

1 に答える 1

4

あなたは現在実装していませんComparator<E>.compare-あなたは実装しましComparator<ListNode<E>>.compareた。変数のタイプを変更するかメソッドのパラメーターを変更する必要があります。本当にノードを比較するものを作りたいのなら、あなたはComparator<ListNode<E>>

toString()また、比較は、自然順序付けと互換性のある方法でオーバーライドされるタイプに対してのみ実際に機能することにも注意してください。ListNode<Integer>たとえば、10の値は2の値よりも小さいと主張するため、ではうまく機能しません。

于 2012-10-24T17:46:44.580 に答える