zoukankan      html  css  js  c++  java
  • Map接口:HashMap与HashTable的区别

    1)HashMap和Hashtable都实现了Map接口,但是继承的父类不同:
    public class Hashtable extends Dictionary implements Map
    public class HashMap extends AbstractMap implements Map

    2)HashMap是非synchronized,执行速度快,而HashTable是synchronized,执行速度慢,多线程情况下,HashTable可以直接使用,HashMap需要自己增加同步处理。
    3)二者遍历方式的内部实现不同:HashMap和Hashtable都使用了Iterator,此外Hashtable还使用了Enumeration。

    4)在
    Hashtable中,key和value都不允许出现null值(会报空指针异常),可以出现""
    在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。
    当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。
    因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。
    5)Hashtable直接使用对象的hashCode,代码是这样的:       
    int hash = key.hashCode();
    int index = (hash & 0x7FFFFFFF) % tab.length; 而HashMap重新计算hash值,而且用与代替求模: int hash = hash(k); int i = indexFor(hash, table.length);
    6)Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式不同:
    HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。 
  • 相关阅读:
    div+css简写原则
    并发控制
    div+css之块级元素与内联元素
    window.event对象属性(转)
    SQL SERVER 架构管理
    关系的规范化
    js常用事件
    物联小白CoAP协议
    图片不停的横滚
    DropDownlist编程问题
  • 原文地址:https://www.cnblogs.com/CKhomepage/p/10618507.html
Copyright © 2011-2022 走看看