概述
在HashMap类中有内部类static class Node<K,V> implements Map.Entry<K,V>,这就是存储键值的地方。HashMap中null是合法的键,最多只允许一条Node的key为null,但允许多条Node的value为null。
例:
以下代码打印内容是什么?
Map<String,String> map=new HashMap<>();
map.put(null,"1");
map.put(null,"2");
map.put("a",null);
map.put("b",null);
System.out.println(map);
A、null不能为键,报错;
B、{null=2, a=null, b=null};
C、{null=1, a=null, b=null};
D、{null=1, null=2, a=null, b=null}
解析:
1、null为合法键,排除A;
2、只允许一个可以为null,排除D;
3、其实因为null==null,所以map.put(null,“2”);会替换掉map.put(null,“1”);
最后选 B。
Java容器实际上包含的是引用变量。