Перепись населения

  • 10
  • Недоступна
Очень часто люди и прочие граждане Вселенной пытаются найти своих родственников. Сделаем шаг к программе поиска людей. В задачке нам нужно создать словарь (Map<String, String>) занести в него десять записей по принципу «Фамилия» - «Имя», после чего проверить, сколько людей имеют совпадающие с заданным имя или фамилию.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (468)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Сэм Фишер18 уровень, Кишинев
четверг, 07:57
будьте внимательны насчет того, ЧТО С ЧЕМ сравниваете. я написал все за 5 минут, но методы подсчета одинаковых имен и фамилий не принимались, потому что я в getCountTheSameFirstName брал getKey(), а нужно было getValue(), соответственно в getCountTheSameLastName getKey()
Дмитрий8 уровень, Новосибирск
четверг, 07:55
Подскажите пожалуйста, как вывести количесвто повторяющихся имен ввиде количества (в цифрах) и ввиде количество имен в методе public staic void main(String[] args) ? Решил задачу, но интересно как это вывести на экран)
Andrey Trots11 уровень, Минск
четверг, 17:59
System.out.println(getCountTheSameFirstName(createMap(), "Указываешь имя"));
        System.out.println(getCountTheSameLastName(createMap(), "Указываешь фамилию"));
Дмитрий8 уровень, Новосибирск
пятница, 06:26
Огромное тебе спасибо))) Интересно было продолжение кода, как это работает, благодоря тебе я получил очень большой опыт. Такой вопрос можно задам? Если спрашиваем например сколько совпадений имен, Алексей будет вывод 1, Если Олег 2. А почему, если фамилю спрашиваем например Коликов, то значение 0. Это из-за того, что ключ доджен быть уникальный? и сразу выдает 0?
map.put("Коликов", "Алексей");
map.put("Колов", "Олег");
map.put("Комков", "Олег");
Andrey Trots11 уровень, Минск
пятница, 07:20
Если ты сравниваешь фамилию должно вывести 1; может ты случайно ввел фамилию в метод, где сравнивают имена?
Дмитрий8 уровень, Новосибирск
пятница, 10:24
Все понял почему так) Я код перепечатал в блокнот и с ним работал, сравнил имена, а фамилии не стал сравнивать, так как у них ключ уникален, из-за этого ноль и выдает значение. Если добавил бы метод сравнения фамилий, тогда было бы 1.
Евгений9 уровень, Новосибирск
19 сентября, 10:52
Если ключ уникален, зачем тогда считать фамилии?
llllllllll10 уровень, Red Planet
суббота, 10:09
именно, достаточно проверить на if map.containsKey(lastName) и вернуть 0 или 1
Серж8 уровень, Воронеж
18 сентября, 19:03
В main смотри что передаешь в качестве параметра. В каждом из методов на основе первоначального мапа делается свой, берется его итератор и в цикле сравнивается кей, либо значение (в зависимости какой метод пишем) и сравнивается через сравнивание строк equals с тем, что прилетело в качестве параметра в метод. Ну и каунт переменную создать и итерировать в случае совпадения, а затем вернуть
Serjio9 уровень, Москва
17 сентября, 23:21
Оказывается сравнивать нужно не то, что находится внутри друг с другом, а то что подаётся с наружи. Но как многие говорят, что в этом и есть замысел неявных условий, чтобы в процессе решения покрыть большое количество информации. Но выводит конечно, а что делать...
Павел10 уровень, Новосибирск
5 сентября, 09:58
Добавляете в сет имя либо фамилию, и дальше считаете сколько раз было совпадений (в сет тока уникальные значения попадают).
AlexS11 уровень
17 сентября, 15:59
Отличная идея!
SteAleLun10 уровень
3 сентября, 14:14
Обратите внимане на то, что у нас сначала идёт метод с проверкой ИМЕНИ, а имя у нас является ЗНАЧЕНИЕМ. А в следующем методе мы проверяем ФАМИЛИЮ, которая является КЛЮЧОМ. Я ошибся именно здесь. Имя проверял как ключ, а фамилию, как значение.
Finit11 уровень, Москва
31 августа, 07:11
Задача оказалась достаточно сложной в связи с тем, что нужно обратить внимание на передаваемые параметры в методах возвращающих кол-во людей с похожими фамилиями и именами. Во первых, ключи не могут быть одинаковыми и метод с возвратом кол-во людей с фамилиями, просто должен возвращать 1 или 0, так сказать проверять содержится или нет. А метод getCountTheSameFirstName, как я позже выяснил, должен проверять сколько содержится одинаковых имён относительно ПЕРЕДАВАЕМОГО параметра, то есть name, когда я это понял задача оказалось мега простой. На мой взгляд условия написаны очень стрёмно, из-за этого потратил много времени на решение, но с другой стороны узнал кучу всего о HashMap, даже того, что в этой задаче не надо.
Серж8 уровень, Воронеж
18 сентября, 19:00
Они написаны стрёмно уже в который раз. Сам промучился несколько часов, недоумевая, что делать со вторым методом. В итоге комменты натолкнули на мысль, что сравнивать оказывается надо нечто более поверхностное, и собственно да, после этого задача решилась за пару минут. Кто писал условие - дизлайк тебе
Андрей13 уровень, Москва
25 августа, 19:44
задача огонь)))🤣
Nicha17 уровень, Тольятти
6 августа, 11:21
Мне было сложно, провозился примерно час. Ключи не могут одинаковыми. Обратите внимание на аргументы в методах: public static int getCountTheSameFirstName(Map<String, String> map, String name) public static int getCountTheSameLastName(Map<String, String> map, String lastName) и на то что вы сравниваете в цикле ) Как использовать Iterator с Map смотрите в https://javarush.ru/quests/lectures/questsyntax.level08.lecture02 и остаётся подумать как правильно сравнить в цикле пару с именем/фамилией :)