为了账号安全,请及时绑定邮箱和手机立即绑定

将重复的密钥放入HashMap后会发生什么?

将重复的密钥放入HashMap后会发生什么?

慕勒3428872 2019-12-10 13:08:47
如果我多次将相同的键传递给HashMap的put方法,那么原始值会怎样?如果值重复出现该怎么办?我没有找到任何文档。情况1:密钥的覆盖值Map mymap = new HashMap();mymap.put("1","one");mymap.put("1","not one");mymap.put("1","surely not one");System.out.println(mymap.get("1"));我们得到surely not one。情况2:重复值Map mymap = new HashMap();mymap.put("1","one");mymap.put("1","not one");mymap.put("1","surely not one");// The following line was added:mymap.put("1","one");System.out.println(mymap.get("1"));我们得到one。但是其他值怎么办?我在向学生教授基础知识,有人问我这个问题。是Map等,其中最后一个值引用(但在内存中)水桶?
查看完整描述

3 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

密钥的先前值将被删除,并用新的替代。


如果您想保留所有值,则可以考虑实现如下所示:


import org.apache.commons.collections.MultiHashMap;

import java.util.Set;

import java.util.Map;

import java.util.Iterator;

import java.util.List;

public class MultiMapExample {


   public static void main(String[] args) {

      MultiHashMap mp=new MultiHashMap();

      mp.put("a", 10);

      mp.put("a", 11);

      mp.put("a", 12);

      mp.put("b", 13);

      mp.put("c", 14);

      mp.put("e", 15);

      List list = null;


      Set set = mp.entrySet();

      Iterator i = set.iterator();

      while(i.hasNext()) {

         Map.Entry me = (Map.Entry)i.next();

         list=(List)mp.get(me.getKey());


         for(int j=0;j<list.size();j++)

         {

          System.out.println(me.getKey()+": value :"+list.get(j));

         }

      }

   }

}



查看完整回答
反对 回复 2019-12-11
  • 3 回答
  • 0 关注
  • 247 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信