zoukankan      html  css  js  c++  java
  • Java中HashTable和HashMap的区别

    在Java中,HashTable和HashMap都是哈希表,那么它们有什么区别呢?
     
    1.它们所继承的类不一样。
    HashTable和HashMap都实现了Map接口,但是它们所继承的类时不同的。HashTable继承了Dictionary类(Dictionary类已经过时),而HashMap则是继承了AbstractMap类。我们来看看它们的函数声明。
    HashTable声明:
    1 public class Hashtable<K,V>extends Dictionary<K,V>implements Map<K,V>, Cloneable, Serializable

    HashMap声明:

    public class HashMap<K,V>extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable

    2.HashTable是线程安全的,HashMap是线程不安全的。

    根据JDK6的文档,HashTable是同步的,也就是说,它是线程安全的。从接口的实现中我们就可以看到,Hashtable是实现了Serializable;

    HashMap也同样实现了Serializable,但是根据文档所述,HashMap这个类其实是不同步的,也就是说,HashMap是线程不安全的。如果要使用HashMap进行多线程的开发,那么需要手动添加外同步。(可以使用Collections.synchronizedMap(new HashMap())获取一个线程安全的Map)。

    3.HashTable不允许null作为key和value,而HashMap允许null作为key和value。

    在HashMap中,只能有一条记录使用null作为key(这不是废话嘛 - -!!),但是可以有任意条value为null的记录。意思是,当使用get(key)方法取数据的时候,如果没有,这个key,或者key对应的值为空,那么get(key)返回null。

    HashTable和HashMap最大的区别就是这3个了。

    最后,HashMap比HashTable拥有更多的方法,也更新。所以尽可能使用HashMap进行开发。

  • 相关阅读:
    【转载】Unity的内存管理与性能优化
    [转载]有关placement new
    国内外有用的课程资源
    os模块批量重命名多个工作簿
    利用xlwings将一个工作表,拆成多个工作簿
    利用xlwings批量打开同一文件夹下的N多EXCEL表格
    回归初心,探索真我写在2022年的开始
    利用xlwings在多个工作簿中批量新增工作表
    今日份试题,关于Python办公自动化应用
    随想
  • 原文地址:https://www.cnblogs.com/coderxuyang/p/3717886.html
Copyright © 2011-2022 走看看