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

golang有序map

最近使用go开发排行榜的需求, 有些情况会用到有序map, 但是go竟然没有有序map的实现

本着自己动手丰衣足食的原则, 就自己实现了一个

原理

原理比较简单, 主要结合了container/list双向链表和map

使用双向链表存储key和value, 保证顺序, 使用map存储key和节点信息, 保证查找的时间复杂度

在增加, 删除, 修改, 查询时保证了O(1)的复杂了, 感兴趣的同学可以查看源码, 多多给出更多优化意见

安装

go get -u github.com/shuaibingn/go-extension/ordered_map

使用

```go
package mainimport ("fmt""github.com/shuaibingn/go-extension/ordered_map"
)func main() {om := ordered_map.NewOrderedMap[string, string]() // 初始化有序mapom.Set("key1", "value1") // 设置key, valueom.Set("key2", "value2")om.Set("key3", "value3")value, ok := om.Get("key1") // 获取key1的值fmt.Println(value, ok)om.Remove("key2") // 删除key2keys := om.Keys() // 获取所有的keyfmt.Println(keys)values := om.Values() // 获取所有的valuefmt.Println(values)// 有序map遍历for item := range om.Iterator() {fmt.Println(item.Key, item.Value)}om.Clear() // 清空有序mapfmt.Println(om.Len()) // 获取有序map的长度
}
http://www.lryc.cn/news/474170.html

相关文章:

  • 【LangChain系列4】【Chain模块详解】
  • 51c嵌入式~IO合集1
  • ETLCloud怎么样?深度解析其在数据管理中的表现
  • 高频谐振功放电路
  • kafka如何获取 topic 主题的列表?
  • 全新大模型框架Haystack,搭建RAG pipeline
  • 儿童孤独症专家分享:了解治疗与支持的专业帮助
  • 初始JavaEE篇——多线程(7):定时器、CAS
  • 高精度计算(乘)
  • 在vue中 如何实现跨域
  • 计算机考研,选择西安交通大学还是哈工大?
  • 微积分复习笔记 Calculus Volume 1 - 4.4 The Mean Value Theorem
  • Cpp多态机制的深入理解(20)
  • (六)Python结构数据类型
  • C++进阶-->多态(Polymorphism)
  • python实战项目51:selenium结合requests获取某众点评评论
  • 面试准备第一版ssm spring-springmvc
  • Ubuntu学习笔记 - Day1
  • 挑战Java面试题复习第4天,坚持就是胜利
  • Android 虚拟化框架(AVF)指南
  • day-77 超级饮料的最大强化能量
  • 有道小P 1.0.8 | 完全免费的AI全科学习助手,家长的好帮手
  • vue项目中如何在路由变化时增加一个进度条
  • 如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令以及Vscode中的环境路径配置中找不到gcc
  • 3-petalinux2018.3 摸索记录 - 命令驱动 _ 交叉编译链
  • 【二分查找】——模板
  • 从可逆计算看DSL的设计要点
  • axios竟态问题
  • 如何批量注册多个Outlook邮箱账号并避免关联
  • 如何在安卓設備上設置全局代理?