(); /** V put(K k,V v)
* 将给定的key和value存入Map中。
* 若给定的key在Map中存在则是替换value, * 并会将被替换的value返回。若不存在则返回 * 值为NULL。
* 接收返回值时,若value是包装类的话,注意 * 接收时的类型应当也用包装类,不要用基本类型 * 因为若给定的key不存在,是不会有value被替换 * 的,返回值则为null,若引发自动拆箱会出现 * 空指针异常。 */
Integer old = map.put(\"语文\ System.out.println(\"old:\"+old); map.put(\"数学\ map.put(\"英语\ map.put(\"物理\
map.put(\"化学\
System.out.println(map);
//由于\"语文\"这个key存在了,所以是替换value old = map.put(\"语文\ System.out.println(map);
System.out.println(\"old:\"+old); /*
* V get(K k)
* 根据给定的key获取对应的value.
* 若给定的key不存在,则返回值为null */
Integer value = map.get(\"数学\"); System.out.println(\"数学:\"+value);
value = map.get(\"体育\");
System.out.println(\"体育:\"+value); /*
* V remove(K k)
* 将给定的key对应的这条记录删除。 * 返回值为该条记录中的value */
System.out.println(\"删除Map中的英语..\"); old = map.remove(\"英语\");
System.out.println(\"old:\"+old); System.out.println(map); } }
V put(K k,V v)
将给定的key和value存入Map中。
若给定的key在Map中存在则是替换value,并会将被替换的value返回。 若不存在则返回值为NULL。
V get(K k)
根据给定的key获取对应的value.若给定的key不存在,则返回值为null V remove(K k)
将给定的key对应的这条记录删除。返回值为该条记录中的value boolean containsKey(K k)
判断当前Map中是否包含给定的key.包含的判定标准是依照key的equals的结果 Set keySet() //遍历Map的Key值该方法会将当前Map中所有的key存入一个Set集合中, 遍历返回的集合即等于遍历了所有的key Set> entrySet() //遍历每一组键值 Map中每一组键值对使用一个Entry的实例保存,Entry提供了用来获取其表示的键值对的方法getKey(),getValue()
当一个类的实例作为Map的key使用时
它的两个方法hashcode()与equals()的结果会影响HashMap的检索效率。
若两个key的hashcode()值相同,但是equals比较不相同,则会在HashMap中产生链表,
由于链表的遍历比较慢,所以若这样的元素在Map中非常多的话,那么会严重影响HashMap的查询效率。
所以一个类的hashcode与equals应当成对重写。并注意该问题。 成对重写的准则:
1:当我们重写一个类的equals方法时,就应当连同重写hashCode()方法。
2:一致性,即:当两个对象equals比较结果为true时,那么hashCode()返回的数字应当相等。
3:hashCode()方法返回的数字应当是一个稳定的值,多次调用该方法返回的数字应当相同,除非参与equals比较的属性值发生了改变。
4:两个对象hashCode()值若相同,equals比较的结果最好相同,若不相同则会影响HashMap性能。