Hash算法
HashMap使用Hash算法,所以在解剖HashMap之间,需要先简单的了解Hash算法,Hash算法一般也成为散列算法,通过散列算法将任意的值转化成固定的长度输出,该输出就是散列值,这是一种压缩映射,也就是,散列值的空间远远小于输入的值空间。
简单的说,hash算法的意义在于提供了一种快速存取数据的方法,它用一种算法建立键值与真实值之间的对应关系,(每一个真实值只能有一个键值,但是一个键值可以对应多个真实值),这样可以快速在数组等里面存取数据。5.5亿年前氧浓度升高推动动物的进化
下面我们建立一个HashMap,然后往里面放入12对key-value,这个HashMap的默认数组长度为16,我们的key分别存放在该数组的格子中,每个格子下面存放的元素又是以链表的方式存放元素。
public
static
void
main(String[] args) {
Map map
=
new
HashMap();
map.put(
"
What
"
,
"
chenyz
"
);
map.put(
"
You
"
,
"
chenyz
"
);
map.put(
"
Don't
"
,
"
chenyz
"
);
map.put(
"
Know
"
,
"
chenyz
"
);
map.put(
"
About
"
,
"
chenyz
"
);
map.put(
"
Geo
"
,
"
chenyz
"
);
map.put(
"
APIs
"
,
"
chenyz
"
);
map.put(
"
Can't
"
,
"
chenyz
"
);
map.put(
"
Hurt
"
,
"
chenyz
"
);
map.put(
"
you
"
,
"
chenyz
"
);
map.put(
"
google
"
,
"
chenyz
"
);
map.put(
"
map
"
,
"
chenyz
"
);
map.put(
"
hello
"
,
"
chenyz
"
);
}
当我们新添加一个元素时,首先我们通过Hash算法计算出这个元素的Hash值的hashcode,通过这个hashcode的值,我们就可以计算出这个
新元素应该存放在这个hash表的哪个格子里面,如果这个格子中已经存在元素,那么就把新的元素加入到已经存在格子元素的链表中。
运行上面的程序,我们对HashMap源码进行一点修改,打印出每个key对象的hash值
What-->hash值:8
You-->hash值:3
Don't-->hash值:7
Know-->hash值:13
About-->hash值:11
Geo-->hash值:12
APIs-->hash值:1
Can't-->hash值:7
Hurt-->hash值:1
you-->hash值:10
google-->hash值:3
map-->hash值:8
hello-->hash值:0
计算出来的Hash值分别代表该key应该存放在Hash表中对应数字的格子中,如果该格子已经有元素存在,那么该key就以链表的方式依次放入格子中
分享到:
相关推荐
根据提供的信息,“Java数据结构和算法中文第二版”这本书主要关注的是数据结构与算法的相关内容。下面将基于这些信息,详细介绍数据结构与算法的核心概念、重要性和应用领域,以及在Java编程环境中如何实现这些概念...
### Java数据结构与算法学习笔记知识点总结 #### 一、数据结构概述 数据结构是对数据的一种组织形式,它决定了数据的存储方式以及处理数据的方法。常见的数据结构包括但不限于数组、链表、栈、队列、二叉树、图等...
针对提供的文件列表,我们可以深入探讨以下几个Java数据结构与算法的知识点: 1. **字典树(Trie)** - 尽管未直接提供字典树的源码,但`SuffixArray.java`可能涉及到了字典树的概念。字典树是一种用于快速查找字符...
《数据结构与算法分析——Java语言描述》第三版是一本深入探讨数据结构和算法的经典教材。这本书通过使用Java编程语言,向读者展示了如何设计、实现和分析一系列关键的数据结构和算法,以解决实际问题。书中的源代码...
根据提供的文件信息,“Java数据结构与算法视频”,我们可以推断出该视频主要讲解了使用Java语言实现各种数据结构和算法的基础知识与应用技巧。接下来,我们将深入探讨与这些主题相关的关键知识点。 ### 数据结构 ...
Java数据结构和算法是计算机科学中的核心概念,对于任何Java开发者来说,理解并熟练运用它们至关重要。数据结构是组织和管理数据的方式,而算法则是解决问题的步骤或计算过程。掌握这些概念能帮助开发者编写出更高效...
### 数据结构与算法分析(Java英文版)知识点详解 #### 一、概述 《数据结构与算法分析(Java英文版)》是一本介绍如何利用Java语言处理实际问题中的数据结构和算法的专业书籍。本书由Robert Lafore编写,通过丰富...