Помощ за задачата On Way to Annapurna - Final Exam 14.04.2019
Възможно ли е някой да ми разясни задачата моля?
Възможно ли е някой да ми разясни задачата моля?
Здравей
Ето едно примерно решение:
Докато получа командата END, получавам командни редове - String[] commands; сплитнати по следният начин "\\-\\>". След което правя следното нещо:
command = commands[0];
shop = commands[1];
if(command.equals("Add")){
current = commands[2];
items = Arrays.stream(current.split(",")).collect(Collectors.toList());
}
Конструкцията if е нужна, защото получавам артикули само при command = "Add", но не и при "Remove". След което в switch - конструкцията в case "Add" проверявам дали в дневника има ключ с названието на съответния магазин. Ако няма го добавям, след което използвам for - цикъл за да взема стойностите от списъка items. В case "Remove": премахвам съответния ключ ако съществува.
Сортирам магазините от дневника по следния начин:
System.out.println("Stores list:");
diary
.entrySet()
.stream()
.sorted(Map.Entry.<String, ArrayList<String>>comparingByValue(Comparator.comparing(ArrayList::size)).thenComparing(Map.Entry.comparingByKey()).reversed())
.forEach(element -> {
System.out.println(element.getKey());
element
.getValue()
.stream()
.forEach(store -> System.out.printf("<<%s>>%n", store));
});
Първо ги сортирам според това колко артикула ще бъдат взети от дадения магазин, а след това, ако има два магазина с еднакъв брой артикули, по име. След което ги принтирам.
Успех!