当前位置: 首页 > 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的长度
}

相关文章:

golang有序map

最近使用go开发排行榜的需求, 有些情况会用到有序map, 但是go竟然没有有序map的实现 本着自己动手丰衣足食的原则, 就自己实现了一个 原理 原理比较简单, 主要结合了container/list双向链表和map 使用双向链表存储key和value, 保证顺序, 使用map存储key和节点信息, 保证查找…...

【LangChain系列4】【Chain模块详解】

目录 前言一、LangChain1-1、介绍1-2、LangChain抽象出来的核心模块1-3、特点1-4、langchain解决的一些行业痛点1-5、安装 二、Chain模块2-1、介绍2-2、LLMChain2-3、Sequential Chain(顺序链)2-4、Router Chain 总结 前言 LangChain给自身的定位是&…...

51c嵌入式~IO合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12383193 一、单片机通信数据接收解析方法 前阵子一朋友使用单片机与某外设进行通信时,外设返回的是一堆格式如下的数据: AA AA 04 80 02 00 02 7B AA AA 04 80 02 00 08 75 AA AA 04 80 02 00 9B E2…...

ETLCloud怎么样?深度解析其在数据管理中的表现

在BI或数据大屏等数据分析工具中,经常需要从多个业务系统中提取原始数据,然后对数据进行清洗、处理,以获取高质量、有效且干净的数据以供后续的BI进行数据统计和分析使用,从高质量的实现企业数据的价值变现。 然而,在…...

高频谐振功放电路

目录 集电极馈电电路 高频扼流圈的作用: 并联馈电回路 高频扼流圈作用 : 优缺点 对于并联的集电极馈电网络: 对于串联的集电极馈电网络: 神奇之处 基级馈电电路 自反偏压: 复合输出回路 天线回路 效率分析 总效率分析 互感如何改变工作状态 集电极馈电电路 馈电电路分…...

kafka如何获取 topic 主题的列表?

大家好,我是锋哥。今天分享关于【kafka如何获取 topic 主题的列表?】面试题?希望对大家有帮助; kafka如何获取 topic 主题的列表? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中,可以…...

全新大模型框架Haystack,搭建RAG pipeline

大家好,在AI应用开发的赛道上,目前Haystack以其开源框架的优势,成为LLM技术领域的一匹黑马,对现有竞争者构成挑战。本文将介绍Haystack的亮点优势,并分析它为何能在众多LLM框架中脱颖而出,通过RAG应用实例来…...

儿童孤独症专家分享:了解治疗与支持的专业帮助

在儿童的成长旅程中,每一步都充满了探索与发现。然而,对于患有孤独症的儿童来说,这段旅程往往伴随着更多的挑战与困难。孤独症,这个看似遥远的词汇,却深刻地影响着无数家庭的生活。作为儿童孤独症领域的专家&#xff0…...

初始JavaEE篇——多线程(7):定时器、CAS

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏:JavaEE 目录 定时器的使用 定时器的原理 模拟实现定时器 CAS 介绍 CAS的应用场景 解析 AtomicInteger 类 实现自旋锁 CAS的缺陷…...

高精度计算(乘)

引言 此篇是专栏信息学杂谈第八篇高精度计算(乘),展示了关于C如何实现高精度乘法的代码 正文: 乘法进位 c[i j - 1] a[i] * b[j] x; //x为之前进位 x c[i j - 1] / 10; c[i j - 1] % 10;完整代码: #include …...

在vue中 如何实现跨域

跨域问题是Web开发中常见的挑战,那么如何解决跨域呢,我们一起来看看吧! 跨域是什么? 跨域(Cross-Origin)是指网络请求从一个域名(origin)发起,而请求的目标资源位于另一…...

计算机考研,选择西安交通大学还是哈工大?

C哥专业提供——计软考研院校选择分析专业课备考指南规划 经过全面分析,2025年考研西安交通大学和哈尔滨工业大学计算机专业的报考难度对比如下: 西安交通大学计算机专业 > 哈尔滨工业大学计算机专业 对于想要报考985高校计算机专业但核心目标是优…...

微积分复习笔记 Calculus Volume 1 - 4.4 The Mean Value Theorem

4.4 The Mean Value Theorem - Calculus Volume 1 | OpenStax...

Cpp多态机制的深入理解(20)

文章目录 前言一、多态的概念二、多态的定义与实现两个必要条件虚函数虚函数的重写重写的三个例外override 和 final重载、重写(覆盖)、重定义(隐藏) 三、抽象类概念接口继承和实现继承 四、多态的原理虚表和虚表指针虚函数调用过程动态绑定与静态绑定 五、那...那单继承甚至多…...

(六)Python结构数据类型

一、集合类型(Sets) Sets(集合)是一个无序不重复的元素集。主要功能是自动清除重复的元素。创建集合时使用大括号{}包含其中元素。 Food{西瓜,南瓜,冬瓜,北瓜} print(Food) 输出结果: 增加重复元素,则会…...

C++进阶-->多态(Polymorphism)

1. 多态的概念 多态,顾名思义多种形态;多态分为编译时多态(静态多态)和运行时多态(动态多态),静态多态就是就是我们前面讲的函数重载和函数模板,可以通过传不同类型,然后…...

python实战项目51:selenium结合requests获取某众点评评论

python实战项目51:selenium结合requests获取某众点评评论 一、selenium获取cookies二、利用requests发送请求三、注意事项四、完整代码一、selenium获取cookies 首先,初始化selenium的webdriver,然后使用webdriver打开某众点评主页,之后手动扫码登录,利用selenium的get_c…...

面试准备第一版ssm spring-springmvc

请写出spring中常用的依赖注入方法: 1、setter 2、构造方法注入 3、字段注入 Setter 注入: 通过公共的 setter 方法进行依赖注入。优点:可选依赖,能更清晰地看到依赖关系。缺点:依赖在构造时不可用,可能导…...

Ubuntu学习笔记 - Day1

文章目录 学习目标:学习内容:学习笔记:Linux简介基于Linux内核的系统 Ubuntu简介GNU简介 远程连接Ubuntu查看Ubuntu的IP地址Mac连接Ubuntu此时可能显示报错,连接被拒绝解决办法连接成功连接退出 学习目标: 一周掌握 Li…...

挑战Java面试题复习第4天,坚持就是胜利

挑战第 4 天 Excption与Error包结构OOM 知识点SOF 知识点线程程序进程知识点有些字段不想序列化,怎么办?说说 IO 流Java IO与 NIO的区别 Excption与Error包结构 运行时异常(RuntimeException): 包括RuntimeException…...

YOLO26改进 - 注意力机制 | PPA(Parallelized Patch-Aware Attention)并行补丁感知注意:分层特征融合保持小目标表征

前言 本文介绍了用于红外小目标检测的深度学习方法HCF-Net及其在YOLO26中的结合应用。HCF-Net采用升级版U-Net架构,包含PPA、DASI和MDCR三个关键模块。PPA模块利用分层特征融合和注意力机制,采用多分支特征提取策略,捕获不同尺度和级别的特征信息;DASI模块增强跳跃连接,实…...

微服务通信:同步 vs 异步与MQ选型指南

微服务通信:同步 vs 异步与MQ选型指南 基于黑马程序员《SpringCloud微服务开发与实战》MQ篇整理。本文深度解析微服务间两种通信模式的核心差异,并提供主流消息队列(RabbitMQ、RocketMQ、Kafka)的技术选型决策框架。 一、同步调用…...

【TÜV认证级C++安全编码规范】:基于EN 50128 SIL3轨道交通项目的静态分析规则集与PC-lint+定制化配置实录

第一章:【TV认证级C安全编码规范】:基于EN 50128 SIL3轨道交通项目的静态分析规则集与PC-lint定制化配置实录在轨道交通SIL3级安全关键系统开发中,C代码必须满足TV认证所要求的EN 50128:2018 Annex A.3“C语言使用指南”及MISRA C:2008&#…...

WarcraftHelper完全指南:从显示异常到性能飞跃的5个关键突破

WarcraftHelper完全指南:从显示异常到性能飞跃的5个关键突破 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 诊断宽屏适配问题 在34英寸2…...

ANIMATEDIFF PRO电商创新:WebAR商品试穿系统

ANIMATEDIFF PRO电商创新:WebAR商品试穿系统 最近跟几个做电商的朋友聊天,他们都在抱怨同一个问题:商品退货率太高了。尤其是服装鞋帽这类需要试穿的商品,用户光看图片和模特展示,根本拿不准自己穿上到底合不合适、好…...

Llama-3.2V-11B-cot 安全与合规指南:避免生成有害内容的过滤策略

Llama-3.2V-11B-cot 安全与合规指南:避免生成有害内容的过滤策略 最近在帮一个朋友部署一个基于视觉大模型的应用,他兴奋地给我展示各种有趣的图文对话功能。聊着聊着,他突然问了一个很实际的问题:“这玩意儿要是用户上传一张不合…...

OpenClaw安全实践:Qwen3.5-9B本地化部署防止敏感数据泄露

OpenClaw安全实践:Qwen3.5-9B本地化部署防止敏感数据泄露 1. 为什么需要本地化部署? 去年我在处理一份涉及商业机密的财务分析报告时,第一次意识到公有云API的潜在风险。当时使用某知名云服务商的文本分析接口,虽然服务条款承诺…...

国产AI Agent爆发:从“龙虾风暴”看企业级Agent工具选型与实战指南

摘要: 作为一名在企业架构领域摸爬滚打15年的老兵,我见证了从SOA到微服务,再到如今AI原生架构的数次演进。2026年3月底,国内AI圈掀起的“龙虾风暴”标志着Agent工具正式进入爆发期。然而,对于IT负责人和CIO而言&#x…...

OpenClaw浏览器扩展:Kimi-VL-A3B-Thinking网页图文即时分析工具

OpenClaw浏览器扩展:Kimi-VL-A3B-Thinking网页图文即时分析工具 1. 为什么需要浏览器增强工具 作为一个经常需要从网页获取信息的技术写作者,我长期被两个问题困扰:一是网页内容过于冗长,需要手动筛选关键信息;二是遇…...

开源CLAP音频分类实战案例:上传MP3/WAV即得语义标签

开源CLAP音频分类实战案例:上传MP3/WAV即得语义标签 1. 项目概述 今天给大家介绍一个特别实用的AI工具——CLAP音频分类服务。这是一个基于LAION CLAP模型的开源项目,能够让你上传任何音频文件,就能自动识别出里面的内容是什么。 简单来说…...