因为Map本身是不可以放相同的key的,但是如果我们想,也是有办法的。
另外java也给我们提供了一个钻空子的方法,这就是JDK1.8的IdentityHashMap,也是Map的一个实现类
HashMap比较key的值是用equals来比较的,所以只要key的值一样,就会被认为是同一个key。而IdentityHashMap是用==来比较key的存放地址,所以,只要我们重新new出来一个对象,就可以把值相同的key定义为值相等但地址不相同的key,这样就不会被认为是同一个key
public class MapTest {
public static void main(String[] args) {
Map map = new IdentityHashMap();
map.put(new Integer(1), "tom");
map.put(new Integer(1), "ben");
map.put(new Integer(1), "cat");
map.put(new Integer(1), "dog");
System.out.println(map);
}
}
输出结果是:
{1=tom, 1=dog, 1=cat, 1=ben}
另外HashMap还可以自己重写hashCode和put来实现hashCode的值不一样,从而不会被认为是同一个key,继续研究。。。