Ваш первый пример не делает то, что вы, кажется, говорите, он делает.Он создает карту, упорядоченную по значениям String
, соответствующим каждой клавише Long
.Если вы хотите просто заказать по ключам, вы просто сделаете:
ImmutableSortedMap<Long, String> orderedMap = ImmutableSortedMap.copyOf(myMap);
То же самое будет работать для Map<Long, Map<String, String>>
.Причина, по которой вы пытаетесь не работать, состоит в том, что Map<String, String>
не является Comparable
, поэтому для него нет естественного упорядочения.
Кроме того, вы можете хочу рассмотреть возможность использования Table<Long, String, String>
вместо Map<Long, Map<String, String>>
.Есть даже TreeBasedTable , который будет хранить ключи строк и столбцов в отсортированном порядке.