[Java] Hashmap分析
什么是哈希表
哈希表:
在哈希表中,我们可以利用哈希函数快速访问到数组中的目标数据。如果发生哈希冲突,就使用链表进行存储。这样一来,不管数据量为多少,我们都能够灵活应对。如果数组的空间太小,使用哈希表的时候就容易发生冲突,线性查找的使用频率也会更高;反过来,如果数组的空间太大,就会出现很多空箱子,造成内存的浪费。因此,给数组设定合适的空间非常重要。
哈希函数的6个特征:
①输出的哈希值数据长度不变
②如果输入的数据相同,那么输出的哈希值也必定相同
③即使输入的数据相似,但哪怕它们只有一比特的差别,那么输出的哈希值也会有很大的差异。输入相似的数据并不会导致输出的哈希值也相似
④即使输入的两个数据完全不同,输出的哈希值也有可能是相同的,虽然出现这种情况的概率比较低。这种情况叫作“哈希冲突”
⑤不可能从哈希值反向推算出原本的数据,即输入和输出不可逆
⑥求哈希值的计算相对容易。哈希函数的算法中具有代表性的是MD5、SHA-12和SHA-2等。其中SHA-2是现在应用较为广泛的一个,而MD5和SHA-1存在安全隐患,不推荐使用
注:图1为哈希表存储位置“冲突”时的情况,图2为“哈希冲突”,这两个不是一回事。
参考链接:
Java Set 文档
http://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/util/Set.html
Java Map 文档
http://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/util/Map.html
美国旧金山大学整理制作的算法可视化动画演示网站
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
数据结构动态可视化网站:
https://visualgo.net/zh
[Java] Hashmap分析相关推荐
- Java HashMap双花括号初始化数据的代码解析,及带来的问题分析
引言 package com.azdebugit.test.collection;import java.util.HashMap; import java.util.Map; import java ...
- Java HashMap的死循环的启示
在酷壳上看到博主陈皓写的最新文章疫苗:Java HashMap的死循环.博主看问题非常透彻,代码分析到位,而且图文并茂,很容易让人理解一个死循环是怎么产生的. 在博文中,耗子叔叔分析的最重要的一点就是 ...
- linux java性能监控工具_性能监控工具以及java堆分析OOM
一.性能监控工具 1.系统性能监控 Linux -确定系统运行的整体状态,基本定位问题所在 -uptime: ------系统时间 ------运行时间(例子中为127天) ------连接数(每个终 ...
- java超出gc开销限制_超出了GC开销限制– Java堆分析
java超出gc开销限制 这篇文章是我们原来的GC开销超出问题模式的延续. 正确的Java堆分析对于消除OutOfMemoryError:GC开销问题至关重要. 如果您不熟悉此Java HotSp ...
- 超出了GC开销限制– Java堆分析
这篇文章是我们原来的GC超出限制的问题模式帖子的延续. 正确的Java堆分析对于消除OutOfMemoryError:GC开销问题至关重要. 如果您不熟悉此Java HotSpot 1.6错误,建 ...
- Java HashMap 深入学习!HashMap 怎么 hash?又如何 map?
HashMap 是 Java 中 Map 的一个实现类,它是一个双列结构(数据+链表),这样的结构使得它的查询和插入效率都很高.HashMap 允许 null 键和值,它的键唯一,元素的存储无序,并且 ...
- LeetCode(13.罗马数字转整数) JAVA Hashmap
LeetCode(13.罗马数字转整数) JAVA Hashmap 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D ...
- java HashMap的使用
java HashMap的使用 import java.util.HashMap; import java.util.Iterator; public class WpsklHashMap { pub ...
- java dump分析工具_java性能分析与常用工具
本次源码已放在Github:https://github.com/nateshao/jvm-tuning 个人博客 https://nateshao.gitee.io http://www.nates ...
最新文章
- css位置布局,CSS定位布局相关
- 抗击疫情,AI一直在行动
- k8s v1.9.6 超详细搭建步骤
- python3下载文件-使用Python 3从网上下载文件
- 如何正确使用迁移学习
- Symfony2 学习笔记之模板使用
- ios开发之 icon规范+启动图规范+启动页规范
- Ubuntu搭建tftp服务器
- 我TM快疯了,在博客园开博短短2个月,经历博客园数次故障。。。
- 中移4G模块-ML302-OpenCpu开发-GPIO
- JPA Example查询
- 数控车宏程序c语言,a类宏程序什么意思?a类宏程序编程入门
- 【笔记本触摸板失灵】终极解决办法
- 恢复计算机文件的软件,删除文件恢复大师软件
- 苹果开发者账号双重验证忘记密保终极解决办法
- 雪球结构定价与风险深度分析
- 100以内的质数(素数)
- 中国交税最多的七大企业你知道都是谁吗?
- Victoria(硬盘检测工具)v4.46F绿色版
- <<人性的弱点>>读后感
热门文章
- SqlServerCe 数据库操作示例
- PhpStorm11.0 配置在浏览器中打开文件
- [网络安全自学篇] 二十九.文件上传和IIS6.0解析问题及防御原理(二)
- 【数据结构与算法】之深入解析“排列硬币”的求解思路与算法示例
- HarmonyOS之应用工程结构与设备模板
- Hive SQL子句中 group by 1 是什么意思?
- LeetCode Algorithm 剑指 Offer 57 - II. 和为s的连续正数序列
- PAT (Basic Level) Practice (中文)1006 换个格式输出整数 (15 分)
- 征战蓝桥 —— 2014年第五届 —— C/C++A组第5题——锦标赛
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1103:陶陶摘苹果