如何在HashMap中添加新的存储桶值?

时间:2015-05-30 05:21:11

标签: java-collections-api

我写了这个小代码(下面) -

显示输出Singh。我想知道如何使用单个键 s 添加Patel和Singh两个值?

import java.util.*;
public class Practice {
    public static void main(String [] args)
    {
        String s="Sameer";
        HashMap<String,String> map=new HashMap();
        map.put(s, "Patel");
        map.put(s, "Singh");
        String value=map.get(s);
        System.out.println(value);
    }
}

喜欢s - &gt;帕特尔,辛格。 s指向两个值。

2 个答案:

答案 0 :(得分:0)

你做不到。地图的基本思想是拥有唯一的密钥

答案 1 :(得分:0)

不可以,因为地图中的每个值都有唯一的键,所以无法完成。

你对理解这些概念感到困惑。 我建议先了解一下HashMap的工作原理。 Link1Link2

我认为您关注的是新条目对象添加到同一个存储区,但不会意味着您可以有两个用相同的键映射的值,不,根本不是!

HashMap中的存储桶值存储为Entry类的对象, ,其属性为单键和单值 (Value can be simple object or Collection Object).

以下是了解HashMap工作时需要了解的一些要点 -

  1. HashMap有一个名为Entry的内部类,它存储键值对。
  2. 上面的Entry对象存储在Entry表中。
  3. 表的索引在逻辑上称为存储桶,它首先存储 链表的元素。
  4. 密钥对象的hashcode()用于查找该Entry对象的存储桶。
  5. 如果两个密钥对象具有相同的哈希码,它们将进入同一个桶 表数组。
  6. 密钥对象的equals()方法用于确保密钥的唯一性 宾语。
  7. 未使用值对象的equals()和hashcode()方法     所有
  8. 您的问题的可能解决方案 -

    然而,您可以通过使用 按键映射的 集合对象来实现所需的功能,然后您可以遍历集合对象阅读所有价值观。

    以下是使用List -

    的示例
    import java.util.*;
     class Practice {
        public static void main(String [] args)
        {
            String s="Sameer";
            HashMap<String,List<String>> map=new HashMap();
            List<String> lastNameList = new ArrayList<String>();
            lastNameList.add("Patel");
            lastNameList.add("Singh");
            map.put(s, lastNameList);
            List<String> getList=(ArrayList)map.get(s);
    
            for(String val : getList) {
                System.out.println(val);
            }
        }
    }
    

    现在输出将是 -

    Patel
    Singh
    

    您可以将此想法扩展到任何级别。它取决于你。

    希望它会有所帮助!