java为什么要得到这个Hashmap输出?
import java.util.HashMap;
public class Map {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = {10, 3, 34, 3, 10};
HashMap<Integer, Integer> hmap=new HashMap<Integer, Integer>();
for (int i = 0; i < arr.length; i++) {
System.out.println(hmap.put(arr[i], 1));
}
}
}
我得到的输出如下:
null
null
null
1
1
我没有得到为什么我得到的输出是三倍null
和两倍一
# 1 楼答案
要理解这种行为背后的原因,需要阅读put方法的java规范
put(K key, V value)
你想要的是:
输出:
如果您想知道为什么不打印
arr
数组中的所有键,那么这背后的原因很简单,因为:简单地说,HashMap键是唯一的,如果要添加任何重复的键,那么它将被覆盖
# 2 楼答案
Hashmap
的put
函数在Hashmap中插入值,如果键已经存在,它将用新值替换键的旧值,并返回与键关联的前一个值,如果键没有映射,则返回null
。当您插入前三个值,即10,3,34,因为它们在Hashmap
中不存在,所以null
会被返回,但是当您再次插入3时,这个键已经存在,所以put
会替换旧值,并返回同一个键的旧值,即1,l,所以它会打印1。10人的情况也差不多