美文网首页
HashMap与Hashtable的区别

HashMap与Hashtable的区别

作者: 抠脚大汗 | 来源:发表于2018-08-28 08:59 被阅读0次

    #  HashMap线程不安全,Hashtable线程安全

    Hashtable的get(),set(),remove()方法都使用了synchronized修饰,保证了线程安全。

    HashMap线程不安全,可以使用ConcurrentHashMap替换,或者调用工具类Collections.synchronizedMap()返回一个HashMap对象的封装类对象SynchronizedMap

    #  HashMap允许null的key和value,Hashtable的key和value都不允许为null

    HashMap空key,体现在**putForNullKey**,空value,没有体现就是说任何的key值都可以对应一个null的value。

    Hashtable的put方法,如果传入的value为null,抛出空指针异常

    ~~~

    if (value ==null) {

            throw new NullPointerException();

    }

    ~~~

    在求key的hash时,要key为null的情况下,执行hashCode会报空指针异常

    ~~~

    private static int hash(Object k) {

    return k.hashCode();

    }

    ~~~

    #  HashMap继承**AbstractMap**,实现Map,Cloneable,Serializable接口;Hashtable继承Dictionary(被废弃),实现Map,Cloneable,Serializable接口

    #    HashMap的迭代器**HashIteratorimplements Iterator**;Hashtable的迭代器**Enumeratorimplements Enumeration, Iterator**

    相关文章

      网友评论

          本文标题:HashMap与Hashtable的区别

          本文链接:https://www.haomeiwen.com/subject/ffxfwftx.html