爱玩科技网
您的当前位置:首页Map散列表

Map散列表

来源:爱玩科技网
Map散列表

Map 又叫做查找表

以key-value对的形式存储数据。

Map要求key不允许重复,是否重复依靠equals比较结果而定。 常用的实现类:

HashMap(又名散列表):使用散列算法实现,查询速度快, 在大批量数据中检索中时使用它最理想。

-----------------------------------------------------------------------------------------------------------------------

public class MapDemo1 {

public static void main(String[] args) { /*

* 所处于java.util包中 */

Map map

= new HashMap(); /*

* 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性能。

因篇幅问题不能全部显示,请点此查看更多更全内容