我可以获得具有相同键的HashMap元素的所有值吗? (JAVA)

时间:2016-10-27 17:37:15

标签: java hashmap key

我有一个关于Java编程课程的任务。根据这个任务,我必须创建一个方法,返回许多具有相同键的HashMap元素。但问题是迭代器只通过不同键的元素,所以无论如何,方法返回1.出路是什么?

package com.javarush.test.level08.lesson08.task03;

import java.util.*;

/* Одинаковые имя и фамилия
Создать словарь (Map<String, String>) занести в него десять записей по   принципу «Фамилия» - «Имя».
Проверить сколько людей имеют совпадающие с заданным имя или фамилию.
*/

public class Solution
{
    public static void main(String[] args)
    {
        HashMap<String, String> friends = createMap();
        getCountTheSameLastName(friends, "гладких");
        getCountTheSameFirstName(friends, "Виталий");
    }

    public static HashMap<String, String> createMap()
    {
        HashMap<String, String> name = new HashMap<String, String>();

        name.put("гладких", "Иван");
        name.put("пересыпкин", "Артем");
        name.put("пересыпкин", "Владислав");
        name.put("халитов", "Виталий");
        name.put("чернышев", "Виталий");
        name.put("ивинских", "Виталий");
        name.put("ивинских", "Альфред");
        name.put("осипова", "Мария");
        name.put("ивинских", "Павел");
        name.put("гейтс", "Билл");

        return name;
    }

    public static int getCountTheSameFirstName(HashMap<String, String>         map, String name)
    {
        int MatchesFirstnameCount = 0;

        for (HashMap.Entry<String, String> pair : map.entrySet()) {
            String s = pair.getValue();
            if (s.equals(name) ) {
                MatchesFirstnameCount++;
            }
        }

        return MatchesFirstnameCount;
    }

    public static int getCountTheSameLastName(HashMap<String, String>     map, String lastName)
    {
        int MatchesSecondnameCount = 0;

        for (HashMap.Entry<String, String> pair : map.entrySet()) {
            if (pair.getKey().equals(lastName))
                MatchesSecondnameCount++;
        }
        return MatchesSecondnameCount;
    }
}

2 个答案:

答案 0 :(得分:0)

这听起来像个棘手的问题。 HashMap中的键必须是唯一的。如果要在同一个键上存储多个元素,可以保存以下集合:

Map<Integer, List<Object>> map = new HashMap<>();

然后,以下方法将返回List。

map.get(0) 

答案 1 :(得分:0)

这听起来像一个技巧问题。 HashMap中的每个键只能有一个与之关联的值。 HashMap中的每个密钥都必须是唯一的。

添加重复键时,旧值将被替换(请参阅HashMap.put