Проблема вызвана тем, что ваш код ссылается на два разных класса (ваш собственный класс TreeMap
и класс коллекции JDK TreeMap
) с одинаковым дескриптором «TreeMap», и компилятор не может знать, какой именно. Самый простой и, вероятно, самый элегантный способ решить проблему - переименовать ваш класс, чтобы его имя больше не совпадало с именем любого из других классов, на которые он ссылается. Как советуют другие, переименование вашего класса в TreeMapTest
решит вашу проблему.
Тем не менее, обратите внимание, что, хотя переименование вашего класса, вероятно, является лучшим решением, вполне законно дать вашему классу то же имя, что и другому классу. Но тогда вам нужно использовать полностью определенное имя при ссылке на другой класс, чтобы компилятор знал, когда вы ссылаетесь на свой собственный класс и когда вы ссылаетесь на другой класс с тем же именем.
Итак, еще один способ исправить ваш код - заменить первую строку вашего main
метода следующим:
java.util.TreeMap<Integer, String> hm = new java.util.TreeMap<>();
Поскольку вы используете полное имя (имя пакета, а затем имя класса) для класса коллекции JDK TreeMap
, компилятор знает, что вы ссылаетесь на это, а не на свой собственный класс TreeMap
. (И если вы ссылаетесь на другой класс, как этот, вы должны избавиться от строки import java.util.TreeMap
, так как она больше не нужна.)