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

做的成功的地方网站深圳快速网站制作服

做的成功的地方网站,深圳快速网站制作服,crm客户管理系统简介,昆明百度推广开户HashMap是一种基于哈希表实现的键值对存储结构#xff0c;它通过哈希函数将键映射到数组的索引位置#xff0c;支持高效的插入、查找和删除操作。其核心原理如下#xff1a; 哈希函数#xff1a;将键转换为数组索引。理想情况下#xff0c;不同键应映射到不同索引#xf… HashMap是一种基于哈希表实现的键值对存储结构它通过哈希函数将键映射到数组的索引位置支持高效的插入、查找和删除操作。其核心原理如下 哈希函数将键转换为数组索引。理想情况下不同键应映射到不同索引但冲突难以避免。数组链表使用数组作为桶Bucket每个桶是一个链表解决哈希冲突链地址法。动态扩容当元素数量超过容量与负载因子的乘积时扩容并重新分配元素保持操作高效性。 package mainimport fmt// Entry 键值对链表节点 type Entry struct {Key stringValue interface{}Next *Entry }// HashMap 哈希表结构 type HashMap struct {buckets []*Entry // 桶数组capacity int // 初始容量size int // 元素数量loadFactor float64 // 负载因子 }// NewHashMap 初始化哈希表 func NewHashMap(capacity int) *HashMap {return HashMap{buckets: make([]*Entry, capacity),capacity: capacity,loadFactor: 0.75,} }// hash 哈希函数FNV-1a算法 func (h *HashMap) hash(key string) int {const (offset 2166136261prime 16777619)hash : offsetfor _, c : range key {hash ^ int(c)hash * prime}return hash }// getIndex 计算键对应的桶索引 func (h *HashMap) getIndex(key string) int {return h.hash(key) % h.capacity }// Put 插入键值对 func (h *HashMap) Put(key string, value interface{}) {if float64(h.size)/float64(h.capacity) h.loadFactor {h.resize()}index : h.getIndex(key)entry : h.buckets[index]// 遍历链表查找键是否存在for entry ! nil {if entry.Key key {entry.Value value // 存在则更新return}entry entry.Next}// 不存在则插入链表头部h.buckets[index] Entry{Key: key,Value: value,Next: h.buckets[index],}h.size }// Get 获取值 func (h *HashMap) Get(key string) (interface{}, bool) {index : h.getIndex(key)entry : h.buckets[index]for entry ! nil {if entry.Key key {return entry.Value, true}entry entry.Next}return nil, false }// Delete 删除键 func (h *HashMap) Delete(key string) bool {index : h.getIndex(key)entry : h.buckets[index]var prev *Entryfor entry ! nil {if entry.Key key {if prev nil {h.buckets[index] entry.Next // 删除头节点} else {prev.Next entry.Next // 中间或尾部节点}h.size--return true}prev entryentry entry.Next}return false }// resize 扩容哈希表 func (h *HashMap) resize() {newCapacity : h.capacity * 2newBuckets : make([]*Entry, newCapacity)for i : 0; i h.capacity; i {entry : h.buckets[i]for entry ! nil {next : entry.NextnewIndex : h.hash(entry.Key) % newCapacity // 重新计算索引entry.Next newBuckets[newIndex] // 插入新桶头部newBuckets[newIndex] entryentry next}}h.buckets newBucketsh.capacity newCapacity }func main() {hm : NewHashMap(2) // 初始容量设为2便于触发扩容hm.Put(name, Alice)hm.Put(age, 30)hm.Put(lang, Go) // 触发扩容if val, ok : hm.Get(name); ok {fmt.Println(name:, val) // 输出 Alice}hm.Delete(age)if _, ok : hm.Get(age); !ok {fmt.Println(age deleted) // 输出此句} }
http://www.pierceye.com/news/362392/

相关文章:

  • 网站优化文档天津建设厅网站
  • 网站建设自适应网站电商网站运营规划
  • 做网站如何报价泰州建设局网站质监站
  • 做家具网站电影网站做流量吗
  • 免费1级做看网站制作单页网站要网址
  • 网站返回首页怎么做的好看自贡网站优化
  • 自己的网站如何做推广wordpress积分与奖励
  • 产品包装设计网站网站建设 中企动力宜昌
  • 英语营销型网站建设北京pk10网站开发
  • 交换链接适合哪些网站东莞小程序开发制作
  • 医院网站建设网站阿里巴巴网站是用什么技术做的
  • 潍坊 餐饮网站建设淘宝seo优化
  • 樟木头镇网站建设公司WordPress企业响应式主题
  • 怎么给网站做备份呢怎么去建设微信网站
  • 成都各公司网站中小企业网站建设 论文
  • 广告网站建设实训报告做电商从哪里入手
  • 建电子商务网站需要多少钱做网站的简称
  • 制定网站推广方案网络营销网站分析
  • 商城网站系网站 png逐行交错
  • 陕西网站建设陕icp备免费虚拟机安卓
  • 优化教程网站推广排名东莞网站建设推广有哪些
  • 金阳建设集团网站电子商务系统 网站建设
  • 网站建设规模哪里有做app软件开发
  • 建站工具上市手机视频网站设计
  • 代做道具网站做地方门户网站不备案可以吗
  • 电子商务 网站前台功能想做微商怎么找厂家
  • 网站建设电子书做网站引入字体
  • 顺德建设网站公司分发平台
  • 个人门户网站模板下载婚纱摄影网站定制
  • 提高网站流量的软文案例手机腾讯网