Назад к вопросам
Альфа Капитал
Senior
7
Можно ли любой объект добавить в TreeMap в качестве ключа?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В TreeMap в Java ключи должны быть либо реализованы с интерфейсом Comparable, либо при создании TreeMap должен быть передан объект Comparator. Это необходимо, чтобы TreeMap мог упорядочивать ключи по определённому порядку.
Если объект не реализует Comparable и не передан Comparator, попытка добавить такой ключ вызовет ClassCastException во время выполнения.
Пример:
TreeMap<String, Integer> map = new TreeMap<>();
map.put("apple", 1); // работает, так как String реализует Comparable
class MyKey {}
TreeMap<MyKey, Integer> map2 = new TreeMap<>();
map2.put(new MyKey(), 1); // выбросит ClassCastException, если не передать Comparator
// Правильно с Comparator:
TreeMap<MyKey, Integer> map3 = new TreeMap<>(new Comparator<MyKey>() {
public int compare(MyKey o1, MyKey o2) {
// логика сравнения
return 0;
}
});
map3.put(new MyKey(), 1); // теперь работает
Таким образом, нельзя добавить в TreeMap любой объект в качестве ключа без обеспечения возможности сравнения ключей.