Java 数据结构与算法系列精讲之哈希算法实现

 更新时间:2022年02月18日 10:13:53   作者:我是小白呀  
哈希表本质是一种(key,value)结构,由此我们可以联想到,能不能把哈希表的key映射成数组的索引index呢?如果这样做的话那么查询相当于直接查询索引,查询时间复杂度为O(1),其实这也正是当key为int型时的做法,将key通过某种做法映射成index,从而转换成数组结构

概述

从今天开始, 小白我将带大家开启 Java 数据结构 & 算法的新篇章.

获取哈希值

hashCode()方法可以返回一个对象的哈希值. 需要注意的是, 我们需要对值进行装箱, 才能调用

hashCode()方法.

例子:

public static void main(String[] args) {

    // 小数
    Integer a = 1;
    System.out.println(a.hashCode());

    // 负数
    Integer b = -1;
    System.out.println(b.hashCode());
        
    // 小数
    Double c = 1.23;
    System.out.println(c.hashCode());

    // 字符串
    String d = "Hello World";
    System.out.println(d.hashCode());
}

输出结果:

1
-1
1158867386
-862545276

哈希冲突

哈希冲突 (Hash Collision) 存在的原因是哈希算法被计算的数是无限的, 然而计算后的结果范围有限. 所以会出现两个不同的数据得到相同的哈希值的情况, 即哈希冲突.

哈希冲突的处理办法:

  • 链地址法: 将具有相同的 hash 值的 key 放入到同一个桶中
  • 开放地址法: 将具有相同 hash 值的 key 的后一个值向后顺移到空位

到此这篇关于Java 数据结构与算法系列精讲之哈希算法实现的文章就介绍到这了,更多相关Java 哈希算法实现内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IDEA中的clean,清除项目缓存图文教程

    IDEA中的clean,清除项目缓存图文教程

    这篇文章主要介绍了IDEA中的clean,清除项目缓存图文教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • java方法及this关键字原理分析详解

    java方法及this关键字原理分析详解

    本篇文章主要讲解了对java方法和this关键字的用法及原理分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-10-10
  • springboot学习之Thymeleaf模板引擎及原理介绍

    springboot学习之Thymeleaf模板引擎及原理介绍

    本文主要介绍一下SpringBoot给我们推荐的Thymeleaf模板引擎,这模板引擎呢,是一个高级语言的模板引擎,他的这个语法更简单而且功能更强大,对springboot Thymeleaf模板引擎相关知识感兴趣的朋友一起看看吧
    2022-02-02
  • Java实现的n阶曲线拟合功能示例

    Java实现的n阶曲线拟合功能示例

    这篇文章主要介绍了Java实现的n阶曲线拟合功能,结合实例形式分析了Java基于矩阵的多项式曲线拟合相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • Java8 stream流分组groupingBy的使用方法代码

    Java8 stream流分组groupingBy的使用方法代码

    对于java8的新特性groupingBy方法,相信有很多人都在工作中用过,这篇文章主要给大家介绍了关于Java8 stream流分组groupingBy的使用方法,需要的朋友可以参考下
    2024-01-01
  • HttpClient实现文件上传功能

    HttpClient实现文件上传功能

    这篇文章主要为大家详细介绍了利用HttpClient实现文件上传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • SpringCloud版本问题报错及解决方法

    SpringCloud版本问题报错及解决方法

    这篇文章主要介绍了SpringCloud版本问题报错及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 一次mybatis连接查询遇到的坑实战记录

    一次mybatis连接查询遇到的坑实战记录

    这篇文章主要给大家介绍了关于一次mybatis连接查询遇到的坑的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Java 数据结构与算法系列精讲之数组

    Java 数据结构与算法系列精讲之数组

    数组是有序的元素序列,若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式
    2022-02-02
  • Java设计模式之单件模式深入讲解

    Java设计模式之单件模式深入讲解

    有人说单件模式是最简单的模式,因为它只有一个类,但其实它还有一些值得注意的地方,就如:出现并发性时,单件可能已经不是单件了
    2021-11-11

最新评论