| HashMap中键是唯一的,键一定采用了哈希算法. 比如:
 HashMap<String,String> hm = new HashMap<String,String>();
 hm.put("01","zhangsan");
 hm.put("02","lisi");
 hm.put("01","wangwu");
 如果键不唯一,上面添加的元素全部添加到集合中,(实际上添加不了,这里只是假设)
 那么当你调用get方法时,即:
 String value = hm.get("01");
 得到的value值是"zhangsan"还是"wangwu",由此证明键是唯一的.
 而:
 hm.put("01","zhangsan");
 hm.put("02","zhangsan");
 hm.put("03","zhangsan");
 当你调用get方法,即:
 String v1 = hm.get("01");
 String v2 = hm.get("01");
 String v3 = hm.get("01");
 虽然得到的都是zhangsan,但是却是没有报错的.
 
 所以在Map集合中键是唯一的,值可以重复.
 注意:
 如果键是自定义对象,当用HashMap存储时要在自定义类中重写hashCode和equals方法.
 当用TreeMap存储时要让自定义实现Comparable接口,或者在构造方法传一个比较器.
 |