したがって、Java の TreeMap クラスの形式はTreeMap<K,V>
. 明らかに K は である必要がありますがCombarable
、それは実行時にキャストでのみチェックされ、そうでない場合Comparable
は例外がスローされます。このクラスを として定義するほうが理にかなっているのではないでしょうTreeMap<K extends Comparable<? super K>, V>
か?
ここで何が欠けていますか?
のインスタンスにTreeMap
はキーのコンパレータを指定できるため、自然な全順序付けである必要はありません。
[編集]
より具体的には、のインスタンスは、順序について2つのキーを比較できるTreeMap
インスタンスをコンストラクターに提供することによって作成できます。Comparator
このような方法でマップを作成すると、すべてのキー比較にコンパレータが使用されます。その場合、キーは本質的に比較可能である必要はありません。
キーのコンパレータを提供することは機能します。
私はこのようにCommbarableではないキーを置きます:
TreeMap<K, V> myMap = new TreeMap<K, V>(new Comparator<K>(){
@Override
int compare(K o1, K o2) {
...//Define the compare logic
}
});
myMap.put(...);