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

  • 10
  • Недоступна
Сложно представить себе ситуацию, в которой может понадобиться программа, которую мы предлагаем вам написать. Впрочем, маленькая модификация, и она обретает практический смысл. Также её можно представить частью чего-то большего (поиска?). Давайте создим словарь, занесём в него записи по принципу «фамилия» - «имя» и удалим людей с одинаковыми именами.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (679)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Oleg8 уровень, Москва
понедельник, 22:11
2 arraylista вам в помощь - в первый скидываете имена учеников, во второй повторяющиеся имена.
Алексей9 уровень, Новосибирск
позавчера, 10:56
Может всё же Set? т.к. именно он хранит уникальные значения и циклу нет необходимости прыгать по 50 раз за каждым повторением, которое он вычистил до этого.
Дмитрий10 уровень, Новосибирск
пятница, 14:12
Если хотите решить задачу сами, в помощь вам две сслыки и новый метод для изучения. Но как почитал коментарии лучше сделать через 2 списка, если мы делаем через 1 список, то память компьютера нагружаем сильнее, то лучше через 2 списка) Попробуйте сами решить через 2 ссылки. 1 Список передаем значения, которые создали. (map.values()); 2 Список добавить дублирующиеся названия. (Collections<String> (1список), String)>1 (2список.add(String)) 3.Вызываем метод removeItemFromMapByValue и удалеяем (key, values) key(map) values(зачения) Не забывайте про коротки вывод значений)) for(String значения:названия списка) 1 сслыка 2 сслыка
Merlinvbrd10 уровень
24 сентября, 21:51
Решил записать решение этой задачи на видео, может кому-то поможет: https://www.youtube.com/watch?v=rphm1AKRNhI&ab_channel=merlinvbrd
korchin.alexey10 уровень, Москва
22 сентября, 00:11
Первая для меня задача, с которой пришлось ТАК потрудится. В общем вот как я сделал: 1) В createMap создаю Map. Все как обычно. 2) В FirstNameDuplicated делаю такой алгоритм : - Объявляю 2 переменные, "стринг" и "инт"(инициализирую нулл и 0) - Захожу в цикл по "Map". "стрингу" присваиваю значение "валью", "инт" = 0 - Тут же, внутри цикла запускаю еще один цикл в котором если я нахожу "валью" равный моему "стринг", то увеличиваю переменную "инт" на 1 - После внутреннего цикла спрашиваю "если "инт" больше 1, то делаю брейк цикла(то, есть я нашел больше 1 копии значений и надо бы их удалить) - После общего цикла проверяю опять же "инт" больше 1, чтоб убедиться что копии были найдены, а не просто цикл отработал в холостую. И вызываю функцию ItemFromMap 3) Внутри, в самом конце ItemFromMap вызываю опять FirstNameDuplicated и передаю уже измененную "Мар". Ничего больше не менял Таким образом мы находим каждый повторяющийся элемент в карте и если нашли, то удаляем его и уже НОВУЮ, измененную карту опять проверяем на дубликаты.
Serjio9 уровень, Москва
17 сентября, 18:53
Сначала пробовал с iterator, но потом оставил эту затею и воспользовался немного более знакомым ArrayList, так как он больше поддаётся алгоритмизации. А removeItemFromMapByValue реально сбивает своей навязанной логикой.
Сэм Фишер18 уровень, Кишинев
11 сентября, 14:17
готовый метод removeItemFromMapByValue мне только подпортил процесс решения. короче ребята, берете заполняете мапу, потом 2 цикла(один вложенный в другом). в одном икле берете имя элемента, в другом берете его сравниваете с именами пробегая по элементам. параллельно создаете список и каунтер. и если есть такие же имена меняете каунтер. в конце каждой итерации если каунтер > 1 то добавляете имя в список. после двух циклов бежите по получившемуса списку(если его длина больше 0) и вызываете готовый метод для удаления.
Storm Spirit 110 уровень, Махачкала
9 сентября, 10:31
Exception in thread "main" java.util.ConcurrentModificationException не понимаю почему выходит это ошибка
Адам11 уровень, Грозный
7 сентября, 15:30
Целый день и огромное количество попыток потратил на эту задачу. Люди тут пишут очень сложные решения. Все просто: Скопировать в лист values, искать в листе одинаковые элементы и передать их в метод.
Andrey Shamardin9 уровень, Москва
9 сентября, 11:39
С 12 попытки, но я таки осилил. Спасибо за алгоритм!
Адам11 уровень, Грозный
11 сентября, 09:30
Не за что! Рад что помог.
Sergey13 уровень, Минск
12 сентября, 15:04
Спасибо добрый человек. С листом действительно решить было проще. Правда пока додумался, как найти одинаковые элементы в листе, убил прилично времени. PS Я делал через двойной for и счётчик совпадений. Счётчик нужен, чтобы удалять элементы, которые встречаются чаще 1 раза, без него удалится весь мэп.
Павел10 уровень, Новосибирск
5 сентября, 09:16
Должен признать, что эта задача сначала у меня пошла по пути отказа восприятия, читал читал читал и не мог понять решение. Читал статьи по хеш сету и мапу, но тоже както не шло. Но толи в голове нейроны заработали, толи что, но в один момент решение дошло, а дальше дело за малым написать код чтобы он скомпилировался) Учу джаву как хобби) Должен сказать интересное хобби))
Nuby15 уровень, Москва
30 августа, 19:11
Из 6 попыток 3 улетело на непонимание того, что метод createMap() должен и создать словарь на 10 и вернуть словарь на 10 у меня метод создавал словарь. потом применял removeTheFirstNameDuplicates() и возвращал итог. всё прекрасно работало, но валидатор не принимал. будьте аккуратны )