数据结构5 哈希表(Hash Table)

本文详细介绍了哈希表的概念,包括哈希碰撞及其解决策略,如链表法。阐述了Python和Java中创建、添加、修改、删除和查找哈希表元素的操作,并提供了相关例题展示哈希表在实际问题中的应用,如查找重复元素和寻找字符串差异。
摘要由CSDN通过智能技术生成
  1. 键值对 key : value
  2. 哈希碰撞:两个不同的key通过同一个hash函数得到相同的内存地址
    4通过哈希函数解析出的地址也是1,冲突了。
    解决方法:
    链表法, 在后面通过链表加入内存地址相同的值。
  3. 复杂度
  • 访问: 没有这个方法
  • 搜索:O(1), 如果有hash碰撞的情况下,就不是O(1)了,为O(K), K为碰撞元素的个数
  • 插入: O(1)
  • 删除: O(1)
  1. Python常用操作:
  • 创建哈希表:
# 使用数组创建hash
hashTable = ['']x4
# 使用字典创建hash
mapping = {
   }
  • 添加元素:
hashTable[1] = 'hanmeimei'
hashTable[2] = 'lihua'
hashTable[3] = '233'
mapping[1] = 'hanmeimei'
mapping[2] = 'lihua'
mapping[3] = '233'
  • 修改元素:
hashTable[1] = 'unspoken'
mapping[1] = 'asdf'
  • 删除元素:
hashTable[3] = ''
mapping.pop(1)   # 删除key=1的值
# 或者使用del
del mapping[1]
  • 获取元素:
hashTable[3]
mapping[2]
  • 检查key是否存在:
3 in mapping
  • 哈希表的长度:
len(mapping)
  • 哈希表是否还有元素:
len(mapping) == 0
  1. java常用操作:
//创建哈希表
java.lang.String[] hashTable = new java.lang.String[4];

HashMap<Integer, java.lang.String> map = new HashMap<>();

//添加元素
hashTable[1] = "xiayi";
hashTable[2] = "dan"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值