Создание шаблона TreeMap в Java - PullRequest
0 голосов
/ 14 мая 2011

Итак, класс TreeMap в Java имеет вид TreeMap<K,V>. Очевидно, что K должно быть Combarable, но это проверяется только во время выполнения с использованием приведения, и, если это не Comparable, выдается исключение. Не было бы больше смысла определять этот класс как TreeMap<K extends Comparable<? super K>, V>?

Что мне здесь не хватает?

Ответы [ 2 ]

1 голос
/ 14 мая 2011

Экземпляру TreeMap можно присвоить компаратор для ключей, поэтому им не нужно иметь естественный общий порядок.

[EDIT]

В частности, экземплярTreeMap можно создать, предоставив конструктору экземпляр Comparator, который способен сравнивать два ключа по порядку.Если вы создадите карту таким образом, компаратор будет использоваться для всех ключевых сравнений.В этом случае ключи не должны были бы быть сопоставимы по своей природе.

0 голосов
/ 14 мая 2011

При условии, что компаратор ключа может работать.

Я поставил ключ, который не совместим с этим способом:

TreeMap<K, V> myMap = new TreeMap<K, V>(new Comparator<K>(){
    @Override
    int compare(K o1, K o2) {
       ...//Define the compare logic
    }
});

myMap.put(...);
...