В метод main первым параметром приходит имя файла.
В этом файле каждая строка имеет следующий вид:
имя значение
где [имя] - String, [значение] - double. [имя] и [значение] разделены пробелом.
Для каждого имени посчитать сумму всех его значений.
Все данные вывести в консоль, предварительно отсортиро
Считаем зарплаты
- 12
- Недоступна
Комментарии (257)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Игорь 20 уровень, Москва
19 января, 19:00
1 цикл, 1 коллекция:
![]()

0
Булат 24 уровень, Москва
2 января, 22:14
Надо же, первые задачи в этом скоупе, которые удалось сделать самостоятельно за вменяемое время, крутяк!
Сделалось так (да потом глянув в решение понял, что можно было проще, грамотно используя механизм добавления в мапу, но получилось как получилось):
Понял, что таким образом можно сделать таки аналог Multimap (String, List), где каждому Васе добавлять в список его числа, если он уже есть в списке. Ну и создать ему список в противном случае. Далее немного магии с лямбдой и сумма для i-го name находится и выводится сразу.
А ну и TreeMap за нас отсортирует вывод по ключу. +2
Е К 20 уровень, Краснодар
25 декабря 2020, 13:24
Нагородил немного огород для проверки заполненной мапы.
Но потом здесь увидел классную подсказку:
...
где result - это TreeMap, а splitted - массив из слов исходной строки, разделённых по пробелу.
И так мой код усох до 30 строчек(начиная с объявления пакета)
0
Филипп 23 уровень
9 января, 15:08
Нуу, так то можно и в 1 строчку все записать...
Или классную подсказку IntelliJ Idea тыкнуть не глядя и вся логика в 9 строчках окажется. А потом сидишь и думаешь, что же, например, тут теперь написано. С учётом того что объявленным только TreeMap и BufferedReader остался.
Причем все эти стрелочки и не объявленные переменные нормально работают и валидатор не ругается. 0
Филипп 23 уровень
9 января, 23:20
Судя по поиску это try-with-resources, а валидатор на такую конструкцию без .close() не ругается?
0
Е К 20 уровень, Краснодар
10 января, 12:24
не ругается.
пишу все задачки здесь в try-with-resources - валя пока помалкивает)
0
Филипп 23 уровень
10 января, 12:49
Уже разобрался с утра 😅 я в другой уже задаче написал так:
и в результате получается fr внутри сам не закрывался, и валидатор не пропускал. Оказывается нужно их оба заключать в скобки в try, тогда все нормально.
Может кому тоже пригодится, чтобы -1 попытку не получить :) 0
Е К 20 уровень, Краснодар
10 января, 12:52
Да
Валидатор иногда дело говорит)
0
Андрей 22 уровень, Волгоград
25 декабря 2020, 11:51
такой вывод валидатор не пропустил:
принял вот такой:
0
Филипп 23 уровень
9 января, 14:36
Конечно не пропустит, так список выведется:
Иванов : 1.35
Петров : 5.1
Сидоров : 6.0
В примере же требуют через 1 пробел.
0
Андрей 24 уровень, Москва Expert
18 декабря 2020, 14:20
Очень странно... Решение короче решения JR, но валя его пропустилас первого раза.
Если ранее того не делали, то изучите тему TreeMap и как там всё сортируется по умолчанию. Очень полезен метод containsKey().
![]()

0
gen 23 уровень, Москва
17 декабря 2020, 12:56
Хорошая практика, дважды решать одну задачу. Сначала как знаешь, потом как хочет от тебя валидатор. Если сразу заглядывать в обсуждение или правильное решение, теряется элемент творчества.
+1
Kes Чайник в Банк
24 декабря 2020, 02:55
И что самое важное теряется элемент геморроя! ☝
0
andrew-bc 35 уровень, Варшава
1 декабря 2020, 15:25
У кого не проходило решение с первой строкой. Есть такая штука как невидимые символы BOM в начале каждой строки в UTF-8. Воспользовался такой функцией:
Потом каждую фамилию прогонял через эту функцию:
+1
Kes Чайник в Банк
24 декабря 2020, 02:57
У тебя видать локальный файл был с BOM, при проверке его нет.
0
Павел студент на стероидах в Java Syntax Pro beta
1 декабря 2020, 06:58
Воу-воу! Я думал что после трёх хардов это задача просто на набор текста, хавевэ заглянул в коменты и узнал про merge()
Вывод на печать я и так уже давно ленился делать иначе как forEach()-ем. Но приятно было узнать что ТриМап ещё и сортировку по умолчанию делает. +3
Kes Чайник в Банк
24 декабря 2020, 02:57
Double::sum
О. Что-то новое. Мерси
0
RomanSmoll Backend Developer в CoverApps
29 ноября 2020, 14:46
немного суммируя комменты снизу и добавляя свое:
1.(от себя) - помните статью :хватит писать циклы? ? Так вот , там если покопаться и выбрать 3 правильные функции то тогда весь функционал от добавления до вывода в консоль- 3 строчки! главное , чтобы последовательность этих 3 была правильная.
2. (из комментов снизу) вероятно, еще можно решать через метод merge() но если вы пользуетесь 1 пунктом то он или не нужен или его можно влупить туда
3.(Важное из комментов снизу!!) Не забывайте про Treemap/ помимо +1 попытки, это еще и позволяет обходить стороной сортировку через подобную дьявольщину:
+2
Aleksandr 28 уровень
19 ноября 2020, 12:24
файл в лист. каждый элемент листа сплитом в массив. создаем treemap , каждый первый элемент массива проверяем на содержание в имеющейся мапе. если есть - складываем value, если нет - добавляем новый элемент мапы. после решения в комменты полез, узнал про merge .
0
RomanSmoll Backend Developer в CoverApps
29 ноября 2020, 14:49
зачем файл в лист. каждый элемент листа сплитом в массив, если можно просто ридер научить читать по строчке и сразу в treemap ? мне кажется, это лишние действия
+1