public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new FileReader(args[0]));
String lines;
HashMap<String,Double> hashMap = new HashMap<>();
while((lines=bufferedReader.readLine())!=null){
String[] array = lines.split("\\s");
if(!hashMap.containsKey(array[0])){
hashMap.put(array[0],Double.parseDouble(array[1]));
}
else hashMap.replace(array[0],Double.parseDouble(array[1])+ hashMap.get(array[0]));
}
bufferedReader.close();
hashMap.entrySet().stream().sorted(Map.Entry.comparingByValue()).forEach(e->System.out.println(e.getKey()+" "+e.getValue()));
}
}
24slava
31 уровень
Интересно почему валидатор не хотел принимать такой код для решения задачи (подозреваю что из за стрима но хотелось бы убедиться )
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Стас Пасинков Software Developer в Zipy Master
28 марта, 22:11
ну по-перше, ви сортуєте по значенням, тобто по сумі чисел
по-друге, припускаю існування таких от строк у файлі: Джон Сміт 12. те, що ім'я складається з одного слова ви собі самі придумали. в умові сказано лише шо ім'я і значення розділені пробілом. до того ж у спліті у вас не конкретно пробіл, а будь-який "пробільний символ". це різне.
0
Денис Enterprise Java Developer
28 марта, 21:45решение
Приложи условие задачи и напиши какой пункт валидатор не пропускал. Экстрасенсов на портале нет.
Но в целом ты конечно условия читать не умеешь:
Все данные вывести в консоль, предварительно отсортировав в возрастающем порядке по имени.
А ты сортируешь по значению. Здесь более чем достаточно обычной TreeMap
Ну и с методами мапы не особо дружишь, да... Для твоей цели подошёл бы map.compute()
Или даже merge() можно :)
Еще я бы кодстайл поправил, скобок там накинь, пробелов, однострочники поубирать - читать больно. +2
24slava
28 марта, 22:10
ага понял, спасибо за рекомендации .
0