Java hasmap返回键和值方法的输出不正确

Java hasmap返回键和值方法的输出不正确,java,hashmap,set,Java,Hashmap,Set,我想创建返回相同名字和姓氏数量的方法,但是当我尝试测试和编译代码时,我得到的是输出1,1,这不是真的。因为有10个相同的名字和10个相同的姓氏 public class Solution { public static void main(String[] args) { HashMap<String, String> map = createMap(); System.out.println(getCountTheSameFirstN

我想创建返回相同名字和姓氏数量的方法,但是当我尝试测试和编译代码时,我得到的是输出1,1,这不是真的。因为有10个相同的名字和10个相同的姓氏

public class Solution
{
    public static void main(String[] args)
    {
        HashMap<String, String> map = createMap();
        System.out.println(getCountTheSameFirstName(map, "test"));
        System.out.println(getCountTheSameLastName(map, "test"));
    }
    public static HashMap<String, String> createMap()
    {
        HashMap<String, String> odin = new HashMap<String, String>();
        odin.put("test","test");
        odin.put("test","test");
        odin.put("test","test");
        odin.put("test","test");
        odin.put("test","test");
        odin.put("test","test");
        odin.put("test","test");
        odin.put("test","test");
        odin.put("test","test");
        odin.put("test","test");

         return odin;
    }

    public static int getCountTheSameFirstName(HashMap<String, String> map, String name)
    {
        int count = 0;
        for(Map.Entry<String, String> lol : map.entrySet()){

        String value = lol.getValue();
            if(name.equals(value)){
                count++;
            }
    }
        return count;
    }

    public static int getCountTheSameLastName(HashMap<String, String> map, String familiy)
    {
        int count=0;
        for (Map.Entry<String,String> pair : map.entrySet())
        {
            String key = pair.getKey();
            if (familiy.equals(key))
            {
                count++;
            }
        }
        return count;
    }
}
公共类解决方案
{
公共静态void main(字符串[]args)
{
HashMap=createMap();
System.out.println(getcountthesameflastname(map,“test”);
System.out.println(getCountTheSameLastName(map,“test”);
}
公共静态HashMap createMap()
{
HashMap odin=新HashMap();
欧丁.普特(“测试”、“测试”);
欧丁.普特(“测试”、“测试”);
欧丁.普特(“测试”、“测试”);
欧丁.普特(“测试”、“测试”);
欧丁.普特(“测试”、“测试”);
欧丁.普特(“测试”、“测试”);
欧丁.普特(“测试”、“测试”);
欧丁.普特(“测试”、“测试”);
欧丁.普特(“测试”、“测试”);
欧丁.普特(“测试”、“测试”);
返回odin;
}
public static int getCountTheSameFirstName(HashMap映射,字符串名称)
{
整数计数=0;
for(Map.Entry lol:Map.entrySet()){
字符串值=lol.getValue();
如果(名称等于(值)){
计数++;
}
}
返回计数;
}
public static int getCountTheSameLastName(哈希映射,字符串family)
{
整数计数=0;
for(Map.Entry对:Map.entrySet())
{
String key=pair.getKey();
如果(家庭等于(关键))
{
计数++;
}
}
返回计数;
}
}

请参考
HashMap
-API,它的定义是正确的:“将指定值与此映射中的指定键相关联。如果映射以前包含键的映射,则会替换旧值。”(,V))请参考
HashMap
-API,它的定义是正确的:“将指定值与此映射中的指定键相关联。如果映射之前包含键的映射,则替换旧值。“(,V))

您将插入相同的键
10次。第一次
put
有效,但随后的每次
put
都将用相同的映射替换旧的键/值映射。最终结果是
映射中只有一个键/值对,因此您将
1
作为输出。

您正在插入相同的键
10次。第一次
put
有效,但随后的每次
put
都用相同的映射替换旧的键/值映射。最终结果是
映射中只有一个键/值对
,这就是为什么将
1
作为输出。

您的方法用作哈希Map是设计好的——您强制使用相同的键将其放入HashMap,并在第一次向Map添加值,而在其他任何时候,您只需更改此元素的值,因为它具有相同的键

说明:

您遇到了这种情况-您是这样创建HashMap的:

HashMap<String, String> odin = new HashMap<String, String>();
您正在为键测试设置值测试

如果您重复该操作,您将使用key test将旧元素更改为新元素

这将导致输入的值被替换

与此相反,您必须在HashMap中放入具有唯一键的其他内容(例如数组)。在这种情况下,您可以有10个具有相同值的输入

以下是此HashMap的示例:

HashMap<String, String[]> odin = new HashMap<String, String[]>();
HashMap odin=newhashmap();

在这种情况下,您必须提供字符串键和包含值的字符串数组(问题中的名字和姓氏).

简而言之:您的方法的工作原理与HashMap的设计相同-您可以使用相同的键强制put to HashMap,并在第一次向map添加值,而在任何其他时间,您只需更改此元素的值,因为它具有相同的键

说明:

您遇到了这种情况-您是这样创建HashMap的:

HashMap<String, String> odin = new HashMap<String, String>();
您正在为键测试设置值测试

如果您重复该操作,您将使用key test将旧元素更改为新元素

这将导致输入的值被替换

与此相反,您必须在HashMap中放入具有唯一键的其他内容(例如数组)。在这种情况下,您可以有10个具有相同值的输入

以下是此HashMap的示例:

HashMap<String, String[]> odin = new HashMap<String, String[]>();
HashMap odin=newhashmap();

在这种情况下,您必须提供字符串键和字符串数组,其中包含值(问题中的名字和姓氏)。

对不起!!如果您不使用重复键,则必须获得10&0的输出

您的代码:我刚刚更改了密钥并获得了输出10和0:

public class Solution
{
    public static void main(String[] args)
    {
        HashMap<String, String> map = createMap();
        System.out.println(getCountTheSameFirstName(map, "test"));
        System.out.println(getCountTheSameLastName(map, "test"));
    }
    public static HashMap<String, String> createMap()
    {
        HashMap<String, String> odin = new HashMap<String, String>();
        odin.put("0","test");
        odin.put("1","test");
        odin.put("2","test");
        odin.put("3","test");
        odin.put("4","test");
        odin.put("5","test");
        odin.put("6","test");
        odin.put("7","test");
        odin.put("8","test");
        odin.put("9","test");

        return odin;
    }

    public static int getCountTheSameFirstName(HashMap<String, String> map, String name)
    {
        int count = 0;
        for(Map.Entry<String, String> lol : map.entrySet()){

            String value = lol.getValue();
            if(name.equals(value)){
                count++;
            }
        }
        return count;
    }

    public static int getCountTheSameLastName(HashMap<String, String> map, String familiy)
    {
        int count=0;
        for (Map.Entry<String,String> pair : map.entrySet())
        {
            String key = pair.getKey();
            if (familiy.equals(key))
            {
                count++;
            }
        }
        return count;
    }
}
公共类解决方案
{
公共静态void main(字符串[]args)
{
HashMap=createMap();
System.out.println(getcountthesameflastname(map,“test”);
System.out.println(getCountTheSameLastName(map,“test”);
}
公共静态HashMap createMap()
{
HashMap odin=新HashMap();
“0”,“测试”);
奥丁。普特(“1”,“测试”);
奥丁.普特(“2”,“测试”);
奥丁.普特(“3”,“测试”);
奥丁.普特(“4”,“测试”);
欧丁.普特(“5”,“测试”);
欧丁.普特(“6”,“测试”);
欧丁.普特(“7”,“测试”);
奥丁.普特(“8”,“测试”);
欧丁.普特(“9”,“测试”);
返回odin;
}
public static int getCountTheSameFirstName(HashMap映射,字符串名称)
{
整数计数=0;
for(Map.Entry lol:Map.entrySet()){
字符串值=lol.getValue();
如果(名称等于(值)){
计数++;
}
}
返回计数;
}
public static int getCountTheSameLastName(哈希映射,字符串family)
{
整数计数=0;
for(Map.Entry对:Map.entrySet())
{
String key=pair.getKey();
如果(家庭等于(关键))
{
计数++;
}
}