Почему бы просто не перевернуть компаратор с самого начала, передав конкретный экземпляр comparator
конструктору TreeMap
:
Map<String, Integer> map = new TreeMap<>(Collections.reverseOrder());
map.put("foo", 1);
map.put("bar", 2);
map.put("doe", 3);
System.out.println(map);
{foo = 1, doe = 3, bar =2}
Конечно, без обратного компаратора:
{bar = 2, doe = 3, foo = 1}
Для этого решения не потребуются две карты (исходная и обращенная).
Если вы хотите обе, используйте putAll
с TreeMap
с обратным компаратором:
Map<String, Integer> reversedMap = new TreeMap<>(Collections.reverseOrder());
reversedMap.putAll(map);
System.out.println(reversedMap);
Обратите внимание, что я полностью игнорирую вашу структуру данных, поскольку это не подходит, поэтому я оставил свой дизайн простым, чтобы показать, что можно сделать.Map
из Map
не очень хорошая идея.