2012-10-24 122 views
1

如何比較兩個ListNode值以返回1(如果ListNode爲o1.value> ListNode o2.value,則返回0如果相等,則返回-1,如果小於。用於比較兩個ListNode值的比較器

我現在有這個比較器,但有一個錯誤說抽象方法沒有實現。另外,我不確定他們是否能夠正確比較下面例子中的值。

加'd'。加'b'。加「E」

B-> D->電子

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); 
    }}; 

我怎樣才能實現這個比較正確,以便它有兩個ListNode對象,並返回它們之間的int值比較呢?

回答

4

您目前尚未執行Comparator<E>.compare - 您已執行Comparator<ListNode<E>>.compare。您要麼需要更改變量的類型,您需要將參數更改爲該方法。如果你真的想做一些比較節點的東西,那麼你想要Comparator<ListNode<E>>

另請注意,您的比較僅適用於其中toString()以與其自然順序兼容的方式被覆蓋的類型。例如,它不適用於ListNode<Integer>,因爲它會聲稱10的值小於2的值...

+0

對於比較器 .compare我將如何讓它比較兩個listnode中的值對象?我當前的比較方法已破解,如果我傳遞priorityComparator.compare(li1.next.value,li2.value),其中li1.next.value爲'd'且li2.value爲'b',則它成功將'b'添加到但如果我將'b'與'e'進行比較,它會將e添加到前面,並且.compare將返回值0而不是1.這使得列表e-> b-> d而不是b-> d - >即我知道問題必須與比較方法,但它不正確比較兩個字符串。 – user1766888

+0

沒關係。弄清楚了。感謝你的回答。幫助我瞭解。 – user1766888