`
star65225692
  • 浏览: 276260 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类

java数据结构Hash算法

阅读更多

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就以链表的方式依次放入格子中

分享到:
评论
1 楼 liuxuejin 2011-03-08  
太简单了!

相关推荐

    Java数据结构和算法中文第二版

    根据提供的信息,“Java数据结构和算法中文第二版”这本书主要关注的是数据结构与算法的相关内容。下面将基于这些信息,详细介绍数据结构与算法的核心概念、重要性和应用领域,以及在Java编程环境中如何实现这些概念...

    java数据结构和算法学习笔记

    ### Java数据结构与算法学习笔记知识点总结 #### 一、数据结构概述 数据结构是对数据的一种组织形式,它决定了数据的存储方式以及处理数据的方法。常见的数据结构包括但不限于数组、链表、栈、队列、二叉树、图等...

    java数据结构和算法

    Java数据结构和算法是计算机科学中的核心概念,对于任何Java开发者来说,理解并熟练运用它们至关重要。数据结构是组织和管理数据的方式,而算法则是解决问题的步骤或计算过程。掌握这些概念能帮助开发者编写出更高效...

    Java数据结构和算法中文3(第二版)

    根据提供的信息,我们可以推断《Java数据结构和算法中文3(第二版)》是一本专注于Java编程语言中的数据结构与算法应用的专业书籍。虽然提供的部分内容并没有包含实际的章节或者具体的讲解内容,但根据书名、描述及...

    Java数据结构和算法(第二版)

    根据提供的文件信息,“Java数据结构和算法(第二版)”这本书主要聚焦于使用Java语言来讲解数据结构与算法的相关知识。接下来,我们将基于这个标题、描述以及部分可见内容,提炼并扩展出一些重要的知识点。 ### ...

    Java数据结构和算法中文4(第二版)

    根据提供的信息,我们可以推断《Java数据结构和算法中文4(第二版)》是一本专注于Java编程语言中的数据结构与算法应用的专业书籍。虽然提供的部分内容并没有包含实际的章节或者具体的讲解内容,但根据书名、描述及...

    基于java的数据结构与算法的实现(持续更新)

    Java作为一种广泛应用的编程语言,提供了丰富的工具和库来实现各种数据结构和算法。本项目基于Java语言,深入探讨并实现了多种常用的数据结构与算法,旨在帮助开发者巩固理论知识,提高实际编程能力。 首先,我们要...

    Java数据结构和算法.pdf

    ### Java数据结构和算法知识点详解 #### 一、数组与简单排序 **数组**是Java中最基础的数据结构之一,用于存储固定数量的同类型元素。数组可以是一维、多维,甚至可以是混合维度的。数组中的每个元素可以通过索引...

    java 集合和泛型 1. Map接口 2. HashMap底层实现 3. Hash数据结构和算法 4. 红黑树数据结构和算法

    java 集合和泛型 1. Map接口 2. HashMap底层实现 3. Hash数据结构和算法 4. 红黑树数据结构和算法

Global site tag (gtag.js) - Google Analytics