Не могу понять как найти совпадающие значения в словаре HashMap

370
10 сентября 2017, 00:28

Здравствуйте. У меня есть HashMap, в котором находится 10 пар "ключ-значение". Под ключем находятся фамилии людей, под значением - имена. Я хочу найти, совпадают ли имена и совпадают ли фамилии в HashMap. Пытался сделать вот так, но не работает. Помогите, кто может.

public static int getCountTheSameFirstName(HashMap<String, String> map, String name) {
    //напишите тут ваш код
    int counter = 1;
    Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
    while (iterator.hasNext()) {
        Map.Entry<String, String> pair = iterator.next();
        String value = pair.getValue();
        if (value.equals(name)) {
            counter++;
        } else  {
            counter = 1;
        }
    }
        return counter;
}
public static int getCountTheSameLastName(HashMap<String, String> map, String lastName) {
    //напишите тут ваш код
    int count = 1;
    Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
    while (iterator.hasNext()) {
        Map.Entry<String, String> pair1 = iterator.next();
        String key = pair1.getKey();
        if (key.equals(lastName)) {
            count++;
        } else  {
            count = 1;
        }
    }
        return count;
}
public static void main(String[] args) {
}

}

Answer 1

1) getCountTheSameLastName всегда вернет Вам 1

так как это структура HashMap

HashMap содержит уникальные ключи и по этим ключам дает доступ к данным. Там никогда не будет одинаковых значений.

    map.put("1","1");
    map.put("1","2");

в итоге в HashMap останется только ("1","2");

2) getCountTheSameFirstName - тут ошибка в коде.

Вам не надо менять count постоянно на 1. Иначе, когда алгоритм получает последний key, он видит несовпадение с переданным и перезаписывает count.

итого верно будет так:

public static int getCountTheSameFirstName(HashMap<String, String> map, String lastName)
{
    //напишите тут ваш код
    int count = 0;
    Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
    while (iterator.hasNext())
    {
        Map.Entry<String, String> pair1 = iterator.next();
        String value = pair1.getValue();
        if (value.equals(lastName))
        {
            count++;
        }
    }
    return count;
}
READ ALSO
Конвертация double в int

Конвертация double в int

Доброго времени сутокЕсть код, который проводит некоторые операции с числами типа double а потом выводит их на экран

427
Ошибка cannot be resolved to a variable

Ошибка cannot be resolved to a variable

Всем привет! Собираю кастомную прошивку, портирую функции в неё, у меня есть вопрос по данному коду:

330
Обтекание текста вокруг View элемента в ConstraintLayout

Обтекание текста вокруг View элемента в ConstraintLayout

Есть ли реализация обтекания текста в разметке xml в контейнере Constraint, без программной реализации, если только программное, не подскажите...

395
Почему нажимая на пустой список во фрагменте верхнего уровня, нажатия обрабатываются элементами интерфейса скрытого фрагмента нижнего уровня?

Почему нажимая на пустой список во фрагменте верхнего уровня, нажатия обрабатываются элементами интерфейса скрытого фрагмента нижнего уровня?

Почему нажимая на пустой список во фрагменте верхнего уровня, нажатия обрабатываются элементами интерфейса скрытого фрагмента нижнего...

228