哈希表结构

2023-11-11

1、哈希值

(1)、概念: 是一个十进制的整数,由系统随机给出;
       就是对象的地址值,但这是一个逻辑地址,是模拟出来的;不是数据实际存储的物理地址
(2)、获取哈希值: 可通过Object类hasCode() 方法获取哈希值
hasCode()源码如下:

public native int hasCode() {
	...
}
// native:表示该方法调用的是本地操作系统的方法

(3)、String类重写了hasCode(),所以new出来对象的值如果一样,哈希值就一样;否则不一样
  特例:

"重地".hasCode()  :哈希值是1179395
"通话".hasCode()  :哈希值是1179395
2、哈希表结构

(1)、哈希表的初始长度是16(0~15)
(2)、哈希表组成:
  java7 及之前:哈希表 = 数组 + 链表
  java8 及之后:哈希表 = 数组 + 链表
         或者:哈希表 = 数组 + 红黑树 (只是为了提高查询的速度)
     先使用数组 + 链表,当同个hasCode的下挂元素超过8个时,就改用数组 + 红黑树
(3)、哈希表的查询、增删速度非常快,但创建速度非常慢
(4)、哈希表图解
在这里插入图片描述

3、哈希表不允许存储重复元素的原理

注意: 集合中存储的只能是类对象或者是自定义对象,不能是基本类型。所以这边说的 元素其实是对象元素
    哈希表结构的集合在调用添加元素的方法时,会先调用元素的hasCode()和equals()两个方法;以判断元素是否重复
(1)、调用hasCode(),查看哈希值,不一样则存储到对应哈希值下;一样则调用equals()
(2)、调用equals(),返回false则存储到对应哈希值下;否则不存储

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哈希表结构 的相关文章

随机推荐

  • gta5老是变成单人战局_游戏奇葩反作弊,让玩家变成一只猫,变回人形后怀念起猫咪的生活...

    随着游戏行业不断的发展 现在的游戏越来越优秀了 但是与之相应的作弊外挂也是越来越严重 不少游戏 虽然全球风靡 但是面对外挂依旧有心无力 其中GTA5作为一款非常优秀的游戏 虽然已经是几年时间了 但是依旧有不少玩家热爱 最近GTA5大型DLC
  • 封装Logger日志工具类

    一般情况下我们通过 slf4j注解即可实现打印日志 但是实际工作中 我们可能需要在打印日志的同时处理其他逻辑 比如 出现error日志时要同时上报Sentry 我们虽然可以这样写 lg error e getMessage e Sentry
  • Transformers训练和微调:Training and Fine-tuning

    Transformers种的模型类旨在兼容Pytorch和Tensorflow2 并且可以无缝地在其中使用 本节 会展示如何使用标准的训练工具从头开始训练或微调一个模型 此外 也会展示如何使用Trainer 类来处理复杂的训练过程 使用Py
  • 数据倾斜3

    前言 相信很多接触MapReduce的朋友对 数据倾斜 这四个字并不陌生 那么究竟什么是数据倾斜 又该怎样解决这种该死的情况呢 何为数据倾斜 在弄清什么是数据倾斜之前 我想让大家看看数据分布的概念 正常的数据分布理论上都是倾斜的 就是我们所
  • 【Spring自带工具类】

    断言 断言是一个逻辑判断 用于检查不应该发生的情况 Assert 关键字在 JDK1 4 中引入 可通过 JVM 参数 enableassertions开启 SpringBoot 中提供了 Assert 断言工具类 通常用于数据合法性检查
  • ElasticSearch第十四讲 ES有条件复杂查询

    模糊匹配 模糊匹配主要是针对文本类型的字段 文本类型的字段会对内容进行分词 对查询时 也会对搜索条件进行分词 然后通过倒排索引查找到匹配的数据 模糊匹配主要通过match等参数来实现 match 通过match关键词模糊匹配条件内容 pre
  • 【单片机毕业设计】【mcuclub-dz-058】基于单片机的智能水杯控制系统

    最近设计了一个项目基于单片机的智能水杯控制系统 与大家分享一下 一 基本介绍 项目名 智能水杯 单片机 STC89C52 项目编号 mcuclub dz 058 功能简介 1 通过防水式DS18B20测水温 当水温低于设置最小值 进行加热直
  • elasticsearch 设置使用磁盘上限百分比

    设置 elasticsearch 磁盘上限 避免磁盘空间达到80 出现数据大批量转移 或 多节点磁盘空不足导致故障 PUT cluster settings transient cluster routing allocation disk
  • egg.js 路径别名配置 module-alias

    安装依赖 moudle alias npm install module alias save 配置package json文件 注 这里 root就是别名 后面引号内的内容就是原路径 moduleAliases root app app
  • N-Gram语言模型工具kenlm的详细安装教程

    本配置过程基于Linux系统 下载源代码 wget O https kheafield com code kenlm tar gz tar xz 编译 makdir kenlm build cd kenlm build cmake make
  • python 文件解压缩

    文章目录 python 文件解压缩 1 zip 解压 2 zip 压缩 3 tar 解压 4 tar 压缩 5 gz 解压 6 gz 压缩 7 tar gz tgz 解压 8 tar gz tgz 压缩 9 rar 压缩 10 rar 解压
  • JSON parse error: Invalid UTF-8 解决办法系列

    今天将旧工作空间的项目拷贝至新工作空间目录提示如下错误信息 Request exception org springframework http converter HttpMessageNotReadableException messa
  • vscode:如何在保存less文件时,自动生成对应的css文件,并指定css文件的保存路径

    一 下载安装Easy LESS 首先利用vscode的插件功能搜索并下载安装Easy LESS 点击Install 安装自动生成css文件的插件Easy LESS 二 指定css文件保存路径 点击设置 扩展设置 点击在setting jso
  • centOS7启用(运行)NetworkManager管理网络

    启用 NetworkManager 服务 在命令行下运行以下语句 chkconfig NetworkManager on 设置不用重新开机便可以应用它 service NetworkManager start 运行完语句便可在界面右上角看到
  • 小甲鱼python课后作业及答案001讲_小甲魚"用 Python 设计第一个游戏"课后作业(2019)...

    001 用 Python 设计第一个游戏 问答题 0 IDLE 的交互模式和编辑器模式有什么区别 答 交互模式是你问一个问题它回答一个答案 而编辑模式是一次可以问有很多个问题而且可以解释问题等 1 在课堂上敲过的代码中 除了 print 和
  • ModuleNotFoundError: No module named ‘termios‘

    问题描述 下面的图片出现ModuleNotFoundError No module named termios 等报错 解决方案 使用Unix系统 如果使用Windows系统该包是不支持的 该结论在官方文档上即有说明 https docs
  • ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)的解决办法

    ERROR 1045 28000 Access denied for user ODBC localhost using password NO CMD登录MySQL客户机的命令行程序时报异常 一般情况下 是因为直接输入命令mysql导致的
  • python科学计算库Sympy指南

    SymPy是Python的数学符号计算库 用它可以进行数学公式的符号推导 安装不介绍了 官方文档 这里还是建议使用anaconda from sympy import init printing use unicode True x y s
  • A Survey on Evaluation of Large Language Models

    这是LLM相关的系列文章 针对 A Survey on Evaluation of Large Language Models 的翻译 大型语言模型评价综述 摘要 1 引言 2 背景 2 1 大语言模型 2 2 AI模型评估 3 评估什么
  • 哈希表结构

    1 哈希值 1 概念 是一个十进制的整数 由系统随机给出 就是对象的地址值 但这是一个逻辑地址 是模拟出来的 不是数据实际存储的物理地址 2 获取哈希值 可通过Object类的 hasCode 方法获取哈希值 hasCode 源码如下 pu