Как установить пользовательский компаратор в Java Карта карты? - PullRequest
1 голос
/ 01 февраля 2020
Map<Character, TreeMap<Integer, String>> topElems = new HashMap<Character, TreeMap<Integer, String>  > ();

Как установить собственный компаратор для TreeMap в приведенном выше выражении?

Что-то вроде:

Map<Character, TreeMap<Integer, String>> topElems = new HashMap<Character, TreeMap<Integer, String> ((x, y) -> y - x)  > ();

1 Ответ

3 голосов
/ 01 февраля 2020

Вы пытаетесь установить Comparator в аргументе типа , что является неверным синтаксисом. Аргументы типа только указывают типы, они не являются фактическими экземплярами. Что вам нужно сделать, это использовать правильные Comparator для каждого TreeMap, который вы положили во внешний Map:

Map<Character, TreeMap<Integer, String>> map = new HashMap<>();

TreeMap<Integer, String> treeMap = new TreeMap<>((x, y) -> y - x);
map.put('A', treeMap);

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

...