当前位置: 首页 > java >正文

哈希表基础

常见的三种哈希结构:

数组:出现次数有限。

set(集合):输出结果中每一结果是唯一的。

map(映射):键值对。

没有限制数值的大小就不能使用哈希表。

如果哈希值比较少,特别分散,跨度非常大,使用数组会造成空间的极大浪费。

集合底层实现是否有序数值是否可以重复能否更改数值
std::set黑红树有序
std::multiset黑红树有序
std::unordereed_set哈希表无序

黑红树是一种平搜二叉搜索树,所以key的值是有序的,但key不能更改,改动会使整棵树错乱。所以只能删除和增加。

映射底层实现是否有序数值是否可以重复能否更改数值
std::map黑红树key有序key不可重复key不可修改
std::multimap黑红树key有序key可重复key不可修改
std::unordered_map哈希表key无序key不可重复key不可修改

总结:

1.当我们遇到了要快速判决一个元素是否出现在集合里的时候,就要考虑哈希法。

2.但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。

3.如果再做面试题的时候遇到要判断一个元素是否出现过的场景也应该第一时间想到哈希法。

http://www.xdnf.cn/news/2428.html

相关文章:

  • 使用rsync和inotidy-tools来进行实时备份文件夹数据
  • Awesome-Embodied-AI: 具身机器人的资源库
  • CentOS7.9安装Python 3.10.11并包含OpenSSL1.1.1t
  • STM32(M4)入门:定时器延时与系统滴答(价值 3w + 的嵌入式开发指南)
  • uni-app 中使用 mqtt.js 的完整版
  • uniapp: 低功耗蓝牙(BLE)的使用
  • 在winform中使用chromiumWebBrowser显示Echarts图表
  • 【RabbitMQ】保证消息不丢失
  • 汽车网络安全 -- 理解暴露面、攻击面和攻击向量
  • 极狐GitLab 议题权重有什么作用?
  • 编译流程、make命令与nccl-test中的Makefile解析
  • 【Spark入门】Spark简介:分布式计算框架的演进与定位
  • C++?动态内存管理!!!
  • 云计算赋能质检LIMS的价值 质检LIMS系统在云计算企业的创新应用
  • Unity3D Cinemachine 高级应用指南
  • PyDantic入门介绍:Python数据验证与解析的利器
  • 57页PPT|非结构化数据管理方案:从顶层设计到应用实践的系统方法论
  • AVL树的介绍与学习
  • 技能点总结
  • X11安装备忘
  • arcpy列表函数的应用(4)
  • 超参数详解:从基础概念到优化策略的全面指南
  • 大学之大:索邦大学2025.4.27
  • Linux的权限
  • RISC-V MCU定时器架构与低功耗设计
  • Redis ssd是什么?Redis 内存空间优化的点都有哪些?embstr 和 row、intset、ziplist分别是什么?
  • 区块链:去中心化应用(DApp)开发全流程解析
  • 区块链基石解码:分布式账本的运行奥秘与技术架构
  • Java 深度与实战 · 每日一读 :高频面试真题解析 · ReentrantLock / CAS / AQS 篇
  • 智慧水库与AI深度融合的实现方案及典型应用场景