Java的HashMap中put()方法返回值的问题

写了个测试类,测试向HashMap中put重复的key返回值是否会返回源码中所说的oldvalue代码如下:publicclassTest{publicstaticvoi... 写了个测试类,测试向HashMap中put重复的key返回值是否会返回源码中所说的oldvalue
代码如下:
public class Test
{

public static void main(String[] args)
{
HashMap<String,String> map = new HashMap<String,String>();
String[] test = new String[30];

for (int i = 0; i < test.length; i++)
{
test[i]=String.valueOf(i);
}

for(int i = 0; i < 30;i++)
{
String str = map.put(String.valueOf(i%4),test[i]);

System.out.println(str);
}

}
}
结果如下:
null
null
null
null
0
1
2
...
24
25
以上测试代码说明如何put相同的key该方法会返回这个key原先指向的value,那是不是这样子原先的value就被覆盖掉了?还是保存在某个entry中?我对hashmap的底层还不是特别理解,盼高手指教!
展开
 我来答
画蛊入了髓7f
推荐于2017-09-30 · TA获得超过179个赞
知道小有建树答主
回答量:261
采纳率:0%
帮助的人:202万
展开全部
put重复的key时,会用新的value替换旧的value,相当于修改 ;
比如
HashMap hm = new HashMap();
hm.put("KK","AA");
hm.put("KK","BB");
hm.get("KK")得到的值是“BB”,且hm中也只有一个entry而已
更多追问追答
追问
那是不是相当于hashmap是一个entry对象的数组?那源代码中entry对象的next成员变量是什么意思?
追答
HashMap也可以说相当于一个Entry的数组,不过储存方式不同,如果想滚动读取的话,需要用Iterator来读取, Iterator.next() 是指向下一个Entry的引用
HashMap hm = new HashMap();
hm.put("01", "AA");
hm.put("02", "BB");
Iterator> it = hm.entrySet().iterator();
while(it.hasNext()){
Map.Entry en = (Map.Entry)it.next();
System.out.println("key->" + en.getKey() + "; value is : " + en.getValue());
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式