返回顶部
首页 > 资讯 > 精选 >Hashtable与HashMap的区别有哪些
  • 368
分享到

Hashtable与HashMap的区别有哪些

hashmaphashtable 2023-05-31 15:05:21 368人浏览 独家记忆
摘要

今天就跟大家聊聊有关Hashtable与HashMap的区别有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。HashMap和Hashtable的详细比较前言:可以直接根据hash

今天就跟大家聊聊有关Hashtable与HashMap的区别有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

HashMap和Hashtable的详细比较

前言:

可以直接根据hashcode值判断两个对象是否相等吗?肯定是不可以的,因为不同的对象可能会生成相同的hashcode值。虽然不能根据hashcode值判断两个对象是否相等,但是可以直接根据hashcode值判断两个对象不等,如果两个对象的hashcode值不等,则必定是两个不同的对象。如果要判断两个对象是否真正相等,必须通过equals方法。

也就是说对于两个对象,如果调用equals方法得到的结果为true,则两个对象的hashcode值必定相等;如果equals方法得到的结果为false,则两个对象的hashcode值不一定不同;如果两个对象的hashcode值不等,则equals方法得到的结果必定为false;如果两个对象的hashcode值相等,则equals方法得到的结果未知。

HashMap和Hashtable不保证map的顺序,也不保证顺序不会随着时间不变。

HashMap实例有两个参数影响性能:初始capacity和load factor。capacity是hashtable中桶的数量,初始capacity就是hashtable创建时的capacity。load factor影响hashtable多满时允许自动增加capacity。当hashtable中entry的数量超过load factor和当前capacity的乘积,hashtable会重新哈希(意味着,内部数据结构重建)因此hashtable大约拥有桶数量的两倍。

作为通用规则,默认load factor(0.75)在时间和空间消耗上提供了好的权衡。值越大,空间开销越小,但是遍历成本增加(表现在大多数操作,包括get和put)。当设置初始capacity时,为了最小化重新hash的操作次数,应该考虑map的entry数量和load factor。如果初始容量大于最大entry数量除以load factor,重新hash操作将不会发生。然而,设置初始capacity太大会浪费空间。

如果许多mapping存储在HashMap实例中,创建时使用足够大的capacity将允许mapping存储得更有效率,因为不会随着table的数量增大重新hash。注意使用许多相同hashCode()的key肯定会降低任意hashtable的性能。

二.相同点

DEFAULT_LOAD_FACTOR

0.75

TREEIFY_THRESHOLD

8

UNTREEIFY_THRESHOLD

6

MIN_TREEIFY_CAPACITY

否则resize()

64

size

mapping数量

threhold

capacity*load factor

三.不同点


     HashMap

Hashtable

线程安全

不安全

安全

允许null的键和值

允许

不允许

实现和继承

实现Map

实现Map,继承Dictionary

遍历方式

Iterator

Iterator和Enumeration

计算哈希值

(key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16)

(key.hashCode() & 0x7FFFFFFF)

计算数组下标

(length - 1) & hash

hash % length

DEFAULT_INITIAL_CAPACITY

16

11

容量增加方式

old*2

长度始终为2的幂

old*2+1

构造函数

threshold=tableSizeFor(initialCapacity)

threhold=initialCapacity*load factor

resize

从0-cap

链表顺序不变

从cap-0

链表顺序相反

 计算数组下标:当length总是2的n次方时,h&(length-1)运算等价于对length取模,也就是h%length,但是&比%具有更高的效率。

容量增加方式:当数组长度为2的n次幂的时候,不同的key算得的index相同的几率较小,那么数据在数组上分布就比较均匀,也就是说碰撞的几率小。相对的,查询的时候就不用遍历某个位置上的链表,这样查询效率也就较高了。导致resize()不同HashMap直接使用之前的数组下表,而Hashtable需要重新计算。

看完上述内容,你们对Hashtable与HashMap的区别有哪些有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: Hashtable与HashMap的区别有哪些

本文链接: https://lsjlt.com/news/226593.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Hashtable与HashMap的区别有哪些
    今天就跟大家聊聊有关Hashtable与HashMap的区别有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。HashMap和Hashtable的详细比较前言:可以直接根据hash...
    99+
    2023-05-31
    hashmap hashtable
  • HashMap和Hashtable的区别
    相同点: HashMap和Hashtable都是java.util包下的类HashMap和Hashtable都实现了Map接口,存储方式都是key-value形式HashMap和Hashtable同时...
    99+
    2023-09-01
    java 哈希算法 开发语言
  • HashMap和Hashtable的区别是什么
    这篇文章主要为大家展示了“HashMap和Hashtable的区别是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HashMap和Hashtable的区别是什么”这篇文章吧。HashMap和...
    99+
    2023-06-19
  • 在Java中HashMap和Hashtable有什么区别
    Java中HashMap和Hashtable的区别:HashMap允许空键值,而Hashtable不允许。Hashtable同步的,而HashMap是非同步的,效率上逼Hashtable要高。Hashtable继承自Dictionary类,...
    99+
    2024-04-02
  • 深入浅析Java中HashMap与HashTable容器的区别
    这篇文章给大家介绍深入浅析Java中HashMap与HashTable容器的区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、HashMap HashMap继承抽象类AbstractMap,实现接口Map、Clon...
    99+
    2023-05-31
    java hashmap hashtable
  • Java入门中Hashtable和HashMap的区别是什么
    这篇文章将为大家详细讲解有关Java入门中Hashtable和HashMap的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Hashtable和HashMap的区别:1.Hasht...
    99+
    2023-06-03
  • java中LinkedHashMap和HashMap的区别有哪些
    这篇文章主要介绍了java中LinkedHashMap和HashMap的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java的优点是什么1. 简单,只需理解基本的...
    99+
    2023-06-14
  • Java的HashMap和HashTable有什么用
    这篇文章主要讲解了“Java的HashMap和HashTable有什么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java的HashMap和HashTable有什么用”吧!HashMap...
    99+
    2023-06-02
  • HashMap和HashTable的区别以及常见面试题是什么
    本篇文章为大家展示了HashMap和HashTable的区别以及常见面试题是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。HashMapHashMap也是我们使用非常多的Collection,它...
    99+
    2023-06-02
  • Java中HashTable和HashMap的区别_动力节点Java学院整理
    HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的区别。主要的区别有:线程安全性,同步(synchronization),以及速度。HashMap几乎可以等价于Hashtable,除了HashMap...
    99+
    2023-05-31
    java hashtable hashmap
  • redis与jedis的区别有哪些
    redis与jedis的区别有哪些?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!redis与spring的整合一般分为sp...
    99+
    2024-04-02
  • Oracle与PostgreSQL的区别有哪些
    这篇文章主要讲解了“Oracle与PostgreSQL的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle与PostgreSQL的区别有哪...
    99+
    2024-04-02
  • mysql与mssql的区别有哪些
    本篇内容主要讲解“mysql与mssql的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql与mssql的区别有哪些”吧! ...
    99+
    2024-04-02
  • mysql与sql的区别有哪些
    这篇文章给大家分享的是有关mysql与sql的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 mysql与sql的区别是:1、SQL是一种用...
    99+
    2024-04-02
  • mysql与db2的区别有哪些
    这篇“mysql与db2的区别有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysq...
    99+
    2024-04-02
  • vuejs1.0与2.0的区别有哪些
    这篇文章将为大家详细讲解有关vuejs1.0与2.0的区别有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 区别:1、VUE2.0中必须用...
    99+
    2024-04-02
  • XHTML与HTML的区别有哪些
    今天小编给大家分享一下XHTML与HTML的区别有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2024-04-02
  • 4G与5G的区别有哪些
    目录4G与5G的区别一、帧结构比较1、4G和5G相同之处2、4G和5G不同之处3、5G设计理念分析4、5G子载波带宽比较5、5G常用子载波带宽二、TDD的上下行配比1、TDD分析2、...
    99+
    2024-04-02
  • API与SDK的区别有哪些
    本篇内容介绍了“API与SDK的区别有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先我们要明白的是...
    99+
    2024-04-02
  • Javascript与Jave的区别有哪些
    本篇内容主要讲解“Javascript与Jave的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Javascript与Jave的区别有哪些”吧! ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作