Level08.lesson11.bonus02

Задача решена через Map. Работает корректно. В цикле for можно ограничить кол-во пар «ключ-значение» по желанию. Можно ввести переменную n и забивать HashMap<Город, Семья> до n-посинения.
Через ArrayList/List делать смысла не вижу. Просто будут искусственно связаны i и i+1 элементы.
Перебивать код только для того, чтобы валидатор задачу съел, не хочу.
В решении через Map логика есть. В решении через List, имхо, маловато её.

package com.javarush.test.level08.lesson11.bonus02;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;



/* Нужно добавить в программу новую функциональность
Задача: Программа определяет, какая семья (фамилию) живёт в доме с указанным номером.
Новая задача: Программа должна работать не с номерами домов, а с городами:
Пример ввода:
Москва
Ивановы
Киев
Петровы
Лондон
Абрамовичи

Лондон

Пример вывода:
Абрамовичи
*/

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        HashMap<String, String> map = new HashMap<String, String>();



        for (int i = 0; i < 3; i++)
        {
            String k = reader.readLine();
            String v = reader.readLine();
            map.put(k, v);
        }

        String city = reader.readLine();

        Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();

        while (iterator.hasNext())
        {
            Map.Entry<String, String> pair = iterator.next();
            String key = pair.getKey();
            String value = pair.getValue();

            if (key.equals(city))
                System.out.println(value);
        }

    }
}

4 комментария

yulsonn
По поводу использования Map — верно. А вот на счет цикла for — в условии ведь не сказано, что пар Фамилия-Город будет какое-то конечное количество, или что кол-во N должно считываться.
Если с консоли будет получена пустая строка — что должно произойти?
MaximAba
Мы исходим из разумного предположения, что для выполнения поставленной задачи у нас конечное кол-во пар «ключ-значение» в Map.
Про пустую строку в задаче ничего не говорится. У меня задача в случае ввода пустой строки завершается с кодом 0.
nikmlk
Посмотри внимательно на пример ввода, там после Абрамовичи вносится пустая строка. Поставь проверку на пустую строку для пары, и прм внесении пистой строки мрограима не должна завершаться, а только выходит из цыкла, в котором вносятся пары, и переходит к пункту, где вносится ключ для получения значения.
Naissur
В решении через Map логика есть. В решении через List, имхо, маловато её.
С использованием Map в городе могут жить только семьи с одной фамилией. Где тут логика?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.