Одинаковые слова в списке

  • 6
  • Недоступна
Поиск аналогов и совпадений — любимое занятие программистов. Давайте проделаем вот что: введем с клавиатуры в список 20 слов и подсчитаем, сколько одинаковых слов в этом списке. Результат представим в виде словаря Map<String, Integer>, где первый параметр – уникальная строка, а второй – число (сколько раз данная строка встречалась в списке).
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (318)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ivan
Уровень 15, Москва
9 июля, 12:30
Мне казалось, что программировать нужно на интерфейсах, а не на их реализациях)
Евгений N
Уровень 13
22 мая, 09:46
не помню где было "если яп позволяет сделать одну вещь многими способами - это плохой яп" 😁 в комментах ниже и merge и compute и frequence, и от JR: getOrDefault... мне кажется слушатели еще яичницу не научились делать, а уже на фуагра замахиваются... самое простое решение: 1. цикл for-each по листу, получаем каждое значение листа в стринговую переменную (это и будет ключ для map) 2. if ( оператор containsKey ) a) новое значение счетчика = ( считать Value оператором get ) и прибавить 1. б) put ( key, новое значение счетчика) 3. else put ( key, 1)
Павел Соловьёв докер - механизатор в Порт
27 июня, 03:59
улучшенный цикл по словам
{
счетчик с нуля
{
улучшенный цикл по тем же словам
{
если слова совпадают счетчик ++
}
}
result.put(слово , счетчик)
Егор Комаров
Уровень 14
30 марта, 08:27
Уже в который раз БОМБИТ с постановки условия задачи. Зачем писать, что в тестах регистр (большая/маленькая буква) влияет на результат. как это понимать? Понимать, что яблоко и ЯблоКО - это одно слово, или что это два? На итоге валидатор и в том и в другом случае выдает ошибку и пишет: Метод countWords должен добавлять в словарь ключи, соответствующие уникальным словам, и значения по этим ключам, отображающие, сколько раз встречалось слово. при этом результат подсчитан верно.
Saturn
Уровень 15, Днепр, Украина
3 ноября 2021, 15:33
Невнимательно прочитал условие и добавлял в мапу только совпадающие слова, от того бомбило что же не так я делаю😂
Кирилл Козлов
Уровень 41, Москва, Россия
3 октября 2021, 08:12
решил с помощью Map.compute(); хватит писать циклы
Валентин
Уровень 18
30 сентября 2021, 08:08
Решил через отработку ошибки на null, а оказывается getOrDefault... во оно как)))
At0m Java Developer
16 сентября 2021, 06:55
рекомендую почитать про метод merge
Андрей Захаренков
Уровень 20, Санкт-Петербург
14 сентября 2021, 19:29
1. создаем две переменные: int count = 0 и String word; 2. проходим циклом по списку и поочередно присваиваем каждое его значение переменной word; 3. внутри первого цикла создаем внутренний цикл по этому же списку, где проверяем каждое значение на equals с переменной word и если они совпадают: count++; 4. выходим из тела внутренного цикла в тело внешнего и добавляем в мапу (word, count); 5. не забываем снова обнулить count; 6. тестируем 7. смотрим правильно решение и запоминаем метод мапы getOrDefault ))
Евгений N
Уровень 13
22 мая, 09:27
переменные создавать не надо: a) у нас же волшебный for (String s : list). б) сразу в мапу кладем getValue+1. тогда и п.5 не нужен. п.3 заменяется проверкой Contains - второй цикл не нужен
Мальков Александр
Уровень 20, Уфа, Россия
29 августа 2021, 16:40
Затупил. Счетчик слов начинал с нуля, а надо с единицы, ибо слово-то одно уже есть.
Valkery
Уровень 32, Белгород, Россия
20 февраля, 10:36
можно в IF убрать дополнительное условие ( i != j ) и начинать count с нуля тогда
Naryuk
Уровень 11, Казахстан
25 августа 2021, 12:01
Покопался в документации оракл, нашёл 2 метода(containsKey(), и replace()). С их помощью решил. Было интересно решать
Евгений N
Уровень 13
22 мая, 09:50
я вот вообще не понял, зачем нужен replace, если put работает абсолютно также ?
евгений янченко
Уровень 13, grodno, Беларусь
29 августа, 03:07
put все таки добавляет в мап, и если key совпадают, тогда он затирает предыдущую пару, и вписывает новую. А replace заменяет существующее (именно то, которое мы укажем) value по ключу.