Нам повторы не нужны

  • 5
  • Недоступна
Сложно представить себе ситуацию, в которой может понадобиться программа, которую мы предлагаем вам написать. Впрочем, маленькая модификация, и она обретает практический смысл. Также её можно представить частью чего-то большего (поиска?). Давайте создим словарь, занесём в него записи по принципу «фамилия» - «имя» и удалим людей с одинаковыми именами.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (304)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Евгений9 уровень, Санкт-Петербург
понедельник, 20:10
Впервые при сдаче валидатору пришла мысль "Какие костыли" и "Как оно вообще работает".
Айдар8 уровень, Казань
15 июня, 19:47
Ребята, всем кому нужен совет. (А то тут все как то заумно пишут) У меня нет большого опыта программирования поэтому напишу просто. 1. заносите мап - значения в лист 2. в цикле проверяете на совпадение. 3. если условие совпало то удаляете через метод с значениями (map,list.get(i))
Ololo Sha13 уровень
11 июня, 10:29
как вывести на экран то что происходит?
Айдар8 уровень, Казань
15 июня, 19:51
в методе пишешь system.out.println c нужным значением а в main вызываешь сам метод
Oleh Leinov14 уровень
9 июня, 18:12
Решил без итераторов, через два HashSet'a: HashSet<String> setOfAllNames = new HashSet<>(); HashSet<String> setOfDuplicateNames = new HashSet<>(); потом в цикле перебираю все имена в map'e и пробую добавить имя в первый сет. Если добавить не получилось (имя там уже содержится, то есть, это дубликат) - тогда добавляю во второй сет. Потом вызываю метод removeItemFromMapByValue для всего сета setOfDuplicateNames. По-моему, выглядит красивее и лаконичнее, чем с итераторами
loki99910 уровень
30 мая, 20:04
easy
Денис12 уровень, Киев
26 мая, 11:03
Почему метод removeItemFromMapByValue(map, "duplicatedValue"); Если его просто вызвать например вне цикла и нацеленно указать дублированное значение ради того чтобы просто проверить функционал метода, почему он удаляет из map обе копии а не одну? Если применить break в методе removeItemFromMapByValue в if блоке после map.remove(pair.getKey()); чтобы избежать удаление всех элементов из map валидатор javarush не примет это за ошибку?
Виталий Капустин10 уровень, Москва
26 мая, 19:07
Метод removeItemFromMapByValue удаляет из map обе копии потому, что он так задуман. Собственно, в задании и требуется удалить людЕЙ, имеющие одинаковые имена.
Денис12 уровень, Киев
26 мая, 19:13
По сути решается очень быстро. Но все потраченные часы в пустую из-за неправильно понятого условия)
Виталий Капустин10 уровень, Москва
26 мая, 19:41
Сам один раз так уже прокололся. Теперь, если не получается, сижу задание перечитываю и смотрю, сходится ли с тем, что делаю =D
Valen10 уровень, Днепр
16 мая, 12:52
Может кому поможет мой метод. 1. Создадим вторую копию нашего словаря. HashMap<String,String> copy2 = new HashMap<>(map); 2. Запускаем foreach по copy2, в нем создаем строку String name и присваиваем ей getValue() из первой пары (Это то имя, с которым мы будем искать совпадения). Тут же добавляем счетчик int i = 0 (Это количество совпадений); 3. Далее запускаем второй foreach но уже по основному словарю map. В нем проверяем if (name.equals(value основного списка)). Если совпадение встречается, то i++. 4. После выхода из второго foreach (по map который), проверяем: if (i > 2), то вызываем метод removeItemFromMapByValue и передаем ему map и наше name. Больше 2, т.к. списки одинаковые и 1 совпадение встретится точно.
Albert9 уровень
12 мая, 12:07
долго возился с исключением ConcurrentException.... наконец-то разобрался, если у кого с этим тоже сложности - пишите, направление для выхода из ошибки дам.
Олег Ерёмичев19 уровень, Волгоград
10 мая, 14:03
Создаем копию map, удаляем из нее не повторяющиеся имена. Затем проходим по ней for each с вызовом removeItemFromMapByValue().
Alexander Morkvashyov8 уровень, Самара
17 июня, 12:27
если реализовали удаление неповторяющихся имен, то что мешало реализовать тогда уж удаление повторяющихся имен и зачем тогда нужен метод removeItemFromMapByValue()?
Igor Zip13 уровень, Одесса
6 мая, 18:18
Решал, задачку долго! Но зато разобрался с коллекциями! Сразу пришло в голову через вложенный цикл: если с первым значением проходимся по мапе, если больше или равно двум повторениям, тогда удаяем! Мне показалось решение правильным, но не смог его реализовать! Пошел другим путем и получилось: создал сет, куда слаживаю все повторения! Потом по значениям из сета применяю данную нам функцию для удаления из нашего мапа!