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

  • 10
  • Недоступна
Сложно представить себе ситуацию, в которой может понадобиться программа, которую мы предлагаем вам написать. Впрочем, маленькая модификация, и она обретает практический смысл. Также её можно представить частью чего-то большего (поиска?). Давайте создим словарь, занесём в него записи по принципу «фамилия» - «имя» и удалим людей с одинаковыми именами.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (783)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Abdushukur
Уровень 10, Узбекистан
1 сентября, 07:58
Anonymous #2329911
Уровень 8
13 августа, 17:10
Несколько подсказок: 1. Попробуйте описать алгоритм простыми словами на листочке по шагам как должно работать. 2. Во втором методе нужно вызывать третий, потому что именно он чистит копии (но не ищет дубли) Более явная подсказка: Нужно каждое имя перебирать среди всех имён, если дубли есть, то передавать их на чистку (третий метод), для этого нужно знать какие имена дублируются. Постарался без явных спойлеров :)
Светлана
Уровень 9, Томск
6 августа, 06:48
Алгоритм реализации метода removeItemFromMapByValue достаточно прост: 1. Создаем список строк в который сохраняем все имена из карты list.addAll(map.values()) 2. В цикле for (int i=0; i < list.size(); i++ ) пробегаем по списку имен, получаем значение текущего элемента и проверяем, есть ли еще вхождения, если да то вызываем removeItemFromMapByValue(map, current); P.S проверить наличие других вхождений элемента в списке очень удобно при помощи (list.lastIndexOf(current) > i). Надеюсь, будет полезно ))
Эльдар
Уровень 9, Ростов-на-дону
6 августа, 12:18
что такое current?
Эльдар
Уровень 9, Ростов-на-дону
10 августа, 12:47
Все,разобрался.Крутое решение,респект)
Vadim Zhalnin
Уровень 14
30 июля, 19:03
Что не дает мне право называться программистом? Только не достаток знания.
Максим Белоусов
Уровень 13, Москва, Россия
27 июня, 11:32
Подсказка: изучить методы класса Collections из документации Oracle. Там есть один, который идеально подходит!
Markel Sharipov
Уровень 15, Россия
30 мая, 18:07
Если кому интересно.ю скину как из пушки стрелять по воробьям, скажу честно, потратил целых пол дня задачу. ArrayList<String> removableNames = new ArrayList<>(); Map<String, String> copy = new HashMap<>(); String s_mapValue, s_mapKey, s_copyValue, s_copyKey; for (Map.Entry<String, String> pair: map.entrySet()) { copy.put(pair.getKey(), pair.getValue()); } for (Map.Entry<String, String> pair: map.entrySet()) { copy.remove(pair.getKey()); s_mapValue = pair.getValue(); s_mapKey = pair.getKey(); for (Map.Entry<String, String> pairCopy: map.entrySet()) { s_copyKey = pairCopy.getKey(); s_copyValue = pairCopy.getValue(); if (s_copyValue == s_mapValue) { if (s_mapKey != s_copyKey) { if (removableNames.contains(s_mapValue)){} else {removableNames.add(s_mapValue);} } } } } for (int i = 0; i < removableNames.size(); i ++) { //System.out.println(removableNames.get(i)); removeItemFromMapByValue(map, removableNames.get(i)); }
Alex Sokoloww
Уровень 17, нижний новгород, Россия
15 августа, 15:21
в начале каждого блока если будут комменты - будет вообще перферт
Андрей
Уровень 15, Москва
19 мая, 12:03
Я один перестал понимать что происходит?
Ivan Tregubov
Уровень 8, Россия
20 мая, 01:53
Нет чувак ты не один)
Rodion
Уровень 17, Германия
5 августа, 20:52
Пропусти задачу и вернись через 5 - 6 уровней
Peter Yakovlev
Уровень 9, Якутск, Россия
11 мая, 05:11
сделал в removeTheFirstNameDuplicates цикл в цикле с count, если count больше 1 то удалить через вызов removeItemFromMapByValue
Вадим
Уровень 23, Москва
8 мая, 16:25
Нужно сначала сформировать набор имен дублирующихся (делал через Set) и только потом переходить к удалению
AnnaBin
Уровень 14, Воронеж, Россия
3 мая, 14:46
Товарищи, к концу 8 уровня перестала понимать, что происходит. Несколько раз перечитывала имеющиеся материалы по работе с Map. Может у кого есть ссылка на максимально подробное описание методов HashMap с разбором задач (видео с комментариями или текстовый файл). Мотивация в районе плинтуса :( Спасибо.