Я пытаюсь преобразовать Map<String, Map<String, String>>
в LinkedHashMap<String, Double>
при сортировке по определенному внутреннему value
.Моя борьба не столько с сортировкой, сколько с преобразованием в процессе.
Учитывая этих потомков Map
и одного родителя Map
:
Map<String, String> man = new HashMap<>();
man.put("h_ratio", "0.45");
man.put("w_ratio", "0.75");
man.put("a_ratio", "0.19");
Map<String, String> bear = new HashMap<>();
bear.put("h_ratio", "0.23");
bear.put("w_ratio", "0.72");
bear.put("a_ratio", "0.95");
Map<String, String> pig = new HashMap<>();
pig.put("h_ratio", "0.37");
pig.put("w_ratio", "0.64");
pig.put("a_ratio", "0.81");
Map<String, Map<String, String>> unsortedOrganisms = new HashMap<>();
unsortedOrganisms.put("man", man);
unsortedOrganisms.put("bear", bear);
unsortedOrganisms.put("pig", pig);
Как мне эффективносоздать LinkedHashMap<String, Double>
сортировку по a_ratio
так, чтобы в результате получилось:
{bear={0.95}, pig={0.81}, man={0.19}}
Реальный размер unsortedOrganisms
равен 50 000, а реальный размер каждого внутреннего Map
50.
Исследования показывают, наиболее эффективный способ, вероятно,
Создание List
набора Entry
на карте и сортировка List
с использованием Collections.sort()
Однако в этом примере предполагается, что выходные данные Map
имеют ту же структуру, что и входная карта.Тогда как мой результат требует преобразования в LinkedHashMap
типа <String, Boolean>