我必須實現一個通用的AVL樹作爲作業。它的定義如下:Java中的排序泛型
public class AVL<Key,Elem>;
的問題是,我認爲在某些時候,我不得不對鍵進行比較,以決定其中一個節點的身邊,我分配的元素。爲了這個作業的目的,Integers將被用作Keys。
由於沒有其他限制或有關信息,我首先想到的是,Key將始終是一個Integer。但是,這使得通用的「關鍵」變得多餘,我不認爲這就是教師所期望的。所以,我認爲最好的解決方案包括強制傳遞任何Key作爲Key實現的比較器,或類似的東西(我真的從來沒有用過Comparator,只是猜測),然後使用該比較器來比較Keys而不是使用==,<,>和!=運算符。但是,我不知道如何去做。任何提示?
在此先感謝。
此解決方案和使用Comparator有什麼區別?有人告訴我他是用它做的。感謝您的解決方案。 – bluehallu 2011-04-16 15:36:27
我認爲你可以用Comparator來混合Comparable。比較器將是一個對象,它可以比較任何類型的對象而無需實現「可比較」。但是,您的密鑰不會實現「比較器」,但您可以將其作爲單獨的對象傳遞。另一方面,Comparable將對象標記爲具有自然順序(由'comparaTo()'的實現定義,如果你的鍵實現了,它們可以直接進行比較,注意所有Number對象('Integer', 'Double'等)以及'String'實現'Comparable'。 – Thomas 2011-04-16 15:53:13
明白了,我將開始閱讀關於Comparable接口的Java文檔。謝謝。 – bluehallu 2011-04-16 15:58:33