Java HashMap与Hashtable数据结构和特点+HashSet简述
Java HashMap与Hashtable数据结构和特点+HashSet简述
1.HashMap
HashMap就是基于数组和链表的数据结构:JDK1.7使用 数组+单向链表;JDK1.8使用 数组+单向链表+红黑树
HashMap有两个重要的参数:
一个是负载因子 0.75:表示数组使用率达到75%,并且数组长度大于64,扩容数组
一个是初始值大小 16:表示数组的长度
特点:HashMap线程不安全,允许赋值为null, 初始数组长度16 扩容2倍
面试题:描述HashMap数据结构
- 构成:数组+单向链表+红黑树
- 数组存放的过程:根据key的hash值经过经过计算(取余)得出当前元素应该存放在数组中的位置,如果当前位置有值,利用单向链表向下延伸
- 延伸为单项链表,因为单向链表的查询效率会随着元素的增多而大幅度下降,所以在JDK1.8之后中加入了红黑树
- 当单向链表的长度超过8 ,并且集合中的元素个数大于64 ,单向链表转换为红黑树,如果数中的元素在后续减少到了6个,则继续转换为单向链表
2.Hashtable
特点:Hashtable线程安全,不允许赋值为null,数组初始为11 扩容2倍+1 JDK1.0就存在
其余与HashMap相同
3.HashSet
HashSet底层使用的是HashMap :因为HashSet中存储的元素与HashMap中存储的键(key)值 特点一致
特点:无序、无下标、不能重复、线程不安全、允许为null
Java HashMap与Hashtable数据结构和特点+HashSet简述相关推荐
- HashMap、HashTable、ConcurrentHashMap、HashSet区别 线程安全类
HashMap专题:HashMap的实现原理--链表散列 HashTable专题:Hashtable数据存储结构-遍历规则,Hash类型的复杂度为啥都是O(1)-源码分析 Hash,Tree数据结构时 ...
- java HashMap 与HashTable的区别
HashMap 与HashTable的区别 HashMap与Hashtable的区别是面试中经常遇到的一个问题.这个问题看似简单,但如果深究进去,也能了解到不少知识.本文对两者从来源,特性,算法等多个 ...
- Java HashMap和Hashtable的区别
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable ...
- JAVA - HashMap和HashTable
1. HashMap 1) hashmap的数据结构 Hashmap本质就是一个数组,只是当key值重复时,使用链表的方式来存储重复的key值(拉链法),注意:链表中存放的仍然是key值.如下图示: ...
- Java HashMap涉及的数据结构及实现
为什么80%的码农都做不了架构师?>>> 提供的功能 基于哈希表实现的Map; 非线程安全的Map实现: 键和值都可以为null(因为有处理null的情形): 基本操作get( ...
- HashMap、Hashtable、HashSet和ConcurrentHashMap掐死版本
1.HashMap 1).HashMap 是基于哈希表的 Map 接口的非同步实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键. 2).HashMap 底层就是一个数组结构 ...
- python面试 hashmap是什么_Java HashMap与Hashtable的区别是什么?
成为入门级的认证专业,最常被问到的面试问题之一是关于Java HashMap和Hashtable.因此,您必须完全准备好回答任何与HashMap或Hashtable相关的问题.Java利用HashMa ...
- java hashmap用法_备战金九银十:Java核心技术面试题100+,助你搞定面试官
一线互联网公司工作了几年,我作为求职者参加了不少面试,也作为面试官面试了很多同学,整理这份面试指南,一方面是帮助大家更好的准备面试,有的放矢,另一方面也是对自己知识框架做一个体系化的梳理. 这篇文章梳 ...
- 聊聊传说中的散列哈希Hash算法,以及Java中的HashTable,HashMap,HashSet,ConcurrentHashMap......
建议本文结合java源码来阅读,看了之后就什么都懂了,还有参考文献. 散列(Hash) 是一种按关键字编址的存储和检索方法 散列表(HashTable)根据元素的关键字确定元素的位置 散列函数(Has ...
最新文章
- MATLAB加入螺旋相位板调制,连续型螺旋相位板设计方法与流程
- java comparable排序_Java使用Comparable解决排序问题
- Nginx Keepalived安装部署完整步骤
- Pdshell教程-利用现有数据库(没有PDM情况下)导出数据库PMD文件
- jquery validate使用总结
- 关于队列(数组队列,链表队列,循环队列)
- iOS 块的简单理解
- vue中书写JSX一些坑-特殊属性名
- kettle 下载安装 使用
- 2021年CKA考试真题(二)
- 【CSS 书写模式 (Writing modes )】
- 从来不敷面膜的人_女人一旦过了40岁,敷面膜要记住“3不要”,否则还不如不敷!...
- 智能汽车操作系统行业研究及十四五规划分析报告
- FPGA基础资源之IOB的应用
- 比特大陆面临破产,吴忌寒:兄弟,把你简历寄过来
- 关于python中的复数、下列说法正确的是_关于Python中的复数,下列说法正确的是?...
- 基于区块链的供应链金融
- 聚华祥科技:类目排名要怎么进行优化
- vs2012安装失败
- 5G NAS (SA) 基础知识
热门文章
- 云+X案例展 | 民生类: “中企通信 × TutorABC”共创全球数字教育科技新里程
- 云现场 | 为什么说边缘计算是5G时代的必备品?
- 工作量不断增加的微软Azure,正缩小与亚马逊AWS的差距
- 开发怼产品,天经地义?大惊小怪?
- php视图查询的优势,ThinkPHP视图查询详解
- 在生产环境中使用 Sentinel
- flowable 动态多实例
- linux环境下redis5.0的安装配置
- 天气模式_北方降雪骤减!南方开启湿冷模式多阴雨!|天气展望
- 3. 什么是icmp?icmp与ip的关系_月入3万的大龄剩女相亲被拒:如果余生是你,晚一点有什么关系...