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

    关于Java中HashTable和HashMap的区别:

    1、继承:

    HashTable继承自Dirctionary,HashMap继承自AbstractMap,二者均实现了Map接口;

    2、线程安全性:

    HashTable的方法是同步的,即是线程安全的。HaspMap的方法不是同步的,不是线程安全的的。在多线程并发的情况下,我们可以直接使用HashTable,如果 要使用HashMap,就需要自行对HashMap的同步处理。

    3、键值:

    HashTable中不允许有null键和null值,HashMap中允许出现一个null键,可以存在一个或者多个键的值都为null。程序中,对于HashMap,如果使用get(参数为 键)方法时,返回结果为null,可能是该键不存在,也可能是该键对应的值为null,这就出现了结果的二义性。因此,在HashMap中,我们不能使用get()方法来查询键 对应的值,应该使用containskey()方法。

    4、遍历:

    这两个在遍历方式的实现不同。HashTable和HashMap两者都实现了Iterator。但是,由于历史原因,HashTable还使用了Enumeration。

    5、哈希值:

    HashTable是直接使用对象的hashCode。HashMap是重新计算hash值。

    6、扩容:

    HashTable和HashMap的底层实现的数组和初始大小和扩容方式。HashTable初始大小为11,并且每次扩容都为:2old+1。HashMap的默认大小为16,并且一 定是2的指数,每次扩容都为old2。

  • 相关阅读:
    C语言博客作业03--函数
    C博客作业02--循环结构
    C博客作业01--分支、顺序结构
    我的第一篇博客
    迭代购物车Dao&&GUI
    Java购物车大作业01
    DS-查找
    DS-图
    DS--树
    DS博客作业02--栈和队列
  • 原文地址:https://www.cnblogs.com/sxblog/p/14067981.html
Copyright © 2011-2022 走看看