Loading...
ison4eto avatar ison4eto 40 Точки

Order By Values Map

Здравейте,

В java има ли аналог на .OrderByDescending(x => x.Value) от C#. Потърсих малко информация из нета, но не открих нещо полезно. 

for (String state: countryPopulation.keySet() //.OrderByDescending(x => x.Value)
             ) {
            System.out.printf("%s (total population: %d)\n",state,countryPopulation.get(state));
            for (String c:populationDensity.keySet()){
                if(Objects.equals(c, state)){
                    for (String key:populationDensity.get(c).keySet() //.OrderByDescending(x => x.Value)
                         ) {
                        System.out.printf("=>%s: %d\n",key,populationDensity.get(c).get(key));
                    }
                }
            }
        }

Става дума за задача Population Counter, решавам я с един вложен map, но не знам при извеждането как да ги подредя по население.

Тагове:
0
Module: Java Advanced
MartinBG avatar MartinBG 4803 Точки

Аз в крайна сметка се спрях на вариант със stream:

        data.entrySet().stream()
                .sorted((country1, country2) -> country2.getValue().values().stream().reduce(0L, Long::sum)
                        .compareTo(country1.getValue().values().stream().reduce(0L, Long::sum)))
                .forEach(country -> {
                    System.out.printf("%s (total population: %d)%n", country.getKey(),
                            country.getValue().values().stream().reduce(0L, Long::sum));
                    country.getValue().entrySet().stream()
                            .sorted((city1, city2) -> city2.getValue().compareTo(city1.getValue()))
                            .forEach(city -> System.out.printf("=>%s: %d%n", city.getKey(), city.getValue()));
                });

 

Не е най-ефективното като решение, най-малкото защото изчислява два пъти популацията за всяка страна (веднъж при сортирането и веднъж при извеждането на резултата), но в случая по-скоро целях да упражня работата със streams и сортиране (би трябвало да ги учим в една от следващите лекции).

Това е цялото ми решение.

0
07/10/2017 19:05:52
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.