java HashTable和HashMap的区别详解「建议收藏」

java HashTable和HashMap的区别详解「建议收藏」一、HashTable1、HashTable是线程安全的,查看源码得知方法使用了同步锁synchronized,如下所示:2、key值不允许为null,如果插入key为null,就会报null指针异常错误,如下所示:注意:key为null,就没有hashcode,无法计算hash值二、HashMap1、HashMap非线程安全常…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、HashTable

1、HashTable 是线程安全的,查看源码得知方法使用了同步锁 synchronized,

如下所示:

java HashTable和HashMap的区别详解「建议收藏」

  

2、  key值不允许为null ,如果插入key 为null , 就会报null指针异常错误,如下所示:

注意:key为null,就没有hashcode,无法计算hash值

java HashTable和HashMap的区别详解「建议收藏」

 

二、HashMap

  1、HashMap 非线程安全 常用于单线程程序,多线程环境下可以采用concurrent并发包下的concurrentHashMap

 ,  key值允许为null, key为null的键值对永远都放在以table[0]为头结点的链表中 ,如下所示:

java HashTable和HashMap的区别详解「建议收藏」

2、HashMap 1.7 与 1.8 的区别

  HashMap1.7 底层采用数组+链表实现

  HashMap1.8底层采用数组+链表+(size>8)红黑树

3、 HashMap是如何解决hash冲突问题的

使用链表存放hash值相当且内容不等 存放到同一个链表中

4、 HashMap的pu底层是如何实现的

根据key判断为空的情况下,存放数组0

默认HashMap的初始容量为16,加载因子大小16×0.75=12   每次扩容x2倍

根据key计算hash值,存放到数组下标位置

如果当前size>加载因子阈值,开始x2倍扩容、

注意:1.8中链表长度大于8 的情况下,将链表转换为红黑树

5、HashMap的加载因子为啥是0.75

这是一个折中方案  空间利用率高 、冲突少  0.75 比较合适

6、HashMap 在1.7 数组扩容死循环问题

HashMap扩容采用了头插法

注解:

头插法就是最新的冲突存放在最最前面

尾插法就表示一直存放在最后的next

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/192855.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • android自定义滑块解锁,android 滑动解锁

    android自定义滑块解锁,android 滑动解锁通过android自定义View实现横向的滑动解锁,1、滑动到中间会自动返回到原始的位置,2、滑动到底部会自动解锁,会触发解锁的回调;首先看效果图如下:实现以上部分一共分为三部分:其中背景通过shape.xml实现滑动的锁是一张图片文字通过Paint绘制在中间,高度可定制主要介绍一下实现的主要部分:(1)有自定义的属性如下:(2)重写ondraw()方法,绘制文字和锁:@Overrideprote…

  • 网站在线漏洞检测_md5码生成

    网站在线漏洞检测_md5码生成系统管理员通常从svn/git中检索代码,部署站点后通常首先会生成该站点所有文件的MD5值,如果上线后网站页面内容被篡改(如挂马)等,可以比对之前生成MD5值快速查找去那些文件被更改,为了使系统管理员第一时间发现,可结合crontab或nagios等工具。分享一例[url=http://www.jbxue.com/jb/python/]python[/url]结合[url=http://w…

  • Spring Boot – Mybatis 缓存

    Spring Boot – Mybatis 缓存mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。mybaits提供一级缓存和二级缓存。一级缓存一级缓存是sqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个(内存区域)数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。一级缓存的作用域是同一个SqlSession,在同一个sqlSession中两次执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存

  • navicat 在线激活码[免费获取]

    (navicat 在线激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • 计算机无法识别ANSI编码文件里的中文导致乱码「建议收藏」

    计算机无法识别ANSI编码文件里的中文导致乱码「建议收藏」问题现象最近远程协助一个用户的电脑(TeamView竟然连接不上,只好用QQ远程啦),原来ANSI编码的ini文件里的中文是正常的;用着用着,某一天就乱码了,无法识别ANSI编码文件里的中文。创建ANSI编码的ini配置文件,输入中文后保存会提示“…该文件有Unicode格式的字符,当文件保存为ANSI编码的文本时,该字符将丢失…”的问题。原因Unicode和ANSI是两种不同的字符编…

  • 数据时代大数据管理,主要有哪些策略?「建议收藏」

    数据时代大数据管理,主要有哪些策略?「建议收藏」1.对大数据时代的大数据管理框架进行创新在大数据时代的大数据管理形式不断发展过程中,给企业发展带来冲击非常巨大。因此,企业要根据我国信息技术不断发展的形式,对大数据管理框架进行全面的设计和创新,如图1所示。在大数据的处理的过程中,主要是围绕着数据资产进行管理的,同时对大数据时代的大数据管理制度,进行全面的规划行、设计、创新,这样对其它信息技术管理领域,提供了便利的条件。其实,大数据时代的大数据管…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号