2014-02-18 60 views
0

我一直在爲泛型類定義compareTo方法。如何爲通用對象實現compareTo()方法?

我創建了一個泛型類BinarySearchTree

public class BinarySearchTree<K extends Comparable<K>, V>{ 
    Node root; 

    private class Node{ 
     K key; 
     V value; 
     Node left=null; 
     Node right=null; 

     public Node(K k, V v){ key=k; value=v; } 
    } 
    ... 

    private int compareTo(K k){ 

    } 
} 

compareTo方法是比較通用型K的兩個實例。如果它們相同,則返回zero。如果this小於k,則返回-1,否則返回1

我用equals()來檢查它們是否相等。但是,我堅持其餘的比較。

+0

忘掉泛型---當代碼到達那裏時,它們就消失了。您必須檢查對象的實際運行時類型並根據該對象作出任何決定。 –

+5

爲什麼你需要實現'compareTo'方法?如果'K'的實例具有可比性,則可以只執行'k.compareTo(anotherK)'。 –

+0

@PaulBellora是否因爲'K'擴展了代碼中的'Comparable '?這個怎麼用? –

回答

1

您不應該將Node<K>K進行比較。如果您需要從外部進行比較,那麼爲什麼不將K與吸氣劑暴露在一起呢?