Loading...
Djombeto avatar Djombeto 7 Точки

Проблем със сортиране..

Здравейте, можете ли да ми кажете защо този сорт не работи...

Map<String, Map<String, List<Integer>>> map = new LinkedHashMap<>();

 

map.entrySet().stream().forEach(e -> {

    e.getValue().entrySet().stream().sorted((e1,e2)->{
        int sort = Integer.compare(e2.getValue().get(0),e1.getValue().get(0));
        if (sort == 0){
            sort = Integer.compare(e2.getValue().size(),e1.getValue().size());
        }
        return sort;
    }).forEach(s ->{
        System.out.println(String.format("(%s) %s <-> %d", e.getKey(), s.getKey(), s.getValue().get(0)));
    });
});
Тагове:
0
Java Fundamentals
MartinBG avatar MartinBG 4803 Точки
Best Answer

Проблемът е, че в кода на компаратора няма информация за това с какъв цвят на шапката са обектите, които се сравняват и съответно няма как да бъде изпълнена втората част от условието за сравненеие: 

You must order the dwarfs by physics in descending order and then by the total count of dwarfs with the same hat color in descending order.

Виждам, че това упражнение е след Objects and Classes, затова направо ще препоръчам използването на прост клас с 3 полета:

    private static final class Dwarf {
        private final String name;
        private final String hatColor;
        private final int physics;

        public Dwarf(String name, String hatColor, int physics) {
            this.name = name;
            this.hatColor = hatColor;
            this.physics = physics;
        }
    }

 

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

0
Djombeto avatar Djombeto 7 Точки

Много благодаря! Ще разгледам решението внимателно

1
24/01/2022 09:51:01
MartinBG avatar MartinBG 4803 Точки

Какво точно "не работи"?

0
Djombeto avatar Djombeto 7 Точки

Не прави сортировката, все едно не съм писал сорт.
https://pastebin.com/Yi0uMRtc

Условие:
When you receive the command "Once upon a time", the input ends. You must order the dwarfs by physics in descending order and then by total count of dwarfs with the same hat color in descending order. 
Then you must print them all.


Ето и как трябва да изглежда output-a:
https://ibb.co/fDDFmvY

0
23/01/2022 11:58:50
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.