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的底层还不是特别理解,盼高手指教! 展开
代码如下:
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的底层还不是特别理解,盼高手指教! 展开
1个回答
展开全部
put重复的key时,会用新的value替换旧的value,相当于修改 ;
比如
HashMap hm = new HashMap();
hm.put("KK","AA");
hm.put("KK","BB");
hm.get("KK")得到的值是“BB”,且hm中也只有一个entry而已
比如
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());
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询