2016-10-14 2 views
0

У меня есть следующие проблемы в приложение Java 6 я пытаюсь сделатьМогу ли я использовать класс Comparator для заказа TreeMap в Java 1.6?

QuotaTirComparator bvc = new QuotaTirComparator(mappaQuote); 
TreeMap<Integer, QuotaTir> sorted_map = new TreeMap<Integer, QuotaTir>(bvc); 

к полученному отсортированному TreeMap.

Но затмение дает мне следующее сообщение об ошибке:

The constructor TreeMap<Integer,QuotaTir>(QuotaTirComparator) is undefined

Почему? Эта функция не включена в Java 6? Что не так? Что мне не хватает?

+0

В вашей TreeMap компаратор должен распространять компаратор не компаратор . Обратите внимание, что конструктор для TreeMap определяется как «TreeMap (компаратор компаратор)», где K - тип ключа. Другой способ выразить это: «Нет, вы не можете этого сделать». – DwB

ответ

3

Я предполагаю, что QuotaTirComparator не является Comparator Очевидно, что компаратор должен быть для ключей, а не значений. Поскольку Integer уже имеет естественный порядок, я бы попытался полностью удалить компаратор.

Дерево отсортировано ключи со связанными значениями. Если вы хотите отсортировать QuoteTir, вам нужен The SortedSet.

Конструктор, который принимает компаратор добавлял Java 1.2 http://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html#TreeMap-java.util.Comparator-

1

Проверьте документы: http://docs.oracle.com/javase/6/docs/api/java/util/TreeMap.html#TreeMap(java.util.Comparator)

Компаратор должен сравнить ключи, а не значения.

+0

Хотя это и было моим первоначальным, хотя основано на имени и имени типа компаратора, что-то говорит мне, что компилятор даст другую ошибку для этого случая. Так что это, вероятно, ответ на вопрос, который появится после решения проблемы, указанной Петром. – Pshemo

+0

Eclipse дает ту же самую ошибку, о которой он описал, за исключением информации о параметризованном типе в TreeMap. – Adam

+0

ОК, то, что я пропустил, это возможность того, что OP фактически отправил ошибку с параметризованными типами, но так как это браузер '<..>' часть не была показана. Я исправил это в вопросе. – Pshemo

Смежные вопросы