golang map 排序 key value
go语言的map是无序的,多次遍历map的结果可能是不同的
举例如下:
package main
import ("fmt"
)
// GetMap 得到map
func GetMap() (result map[int]uint32) {result = map[int]uint32{}// 压入各个数据result[24] = 223result[17] = 91result[9] = 13result[11] = 330result[55] = 100return
}
func main() {mapResu := GetMap()// 遍历mapfor key, value := range mapResu {fmt.Printf("key = %v,value = %v\n", key, value)}
}
第一次遍历结果如下:
key = 17,value = 91
key = 9,value = 13
key = 11,value = 330
key = 55,value = 100
key = 24,value = 223
第二次遍历结果如下:
key = 55,value = 100
key = 24,value = 223
key = 17,value = 91
key = 9,value = 13
key = 11,value = 330
可以看到两次遍历的结果是不同的
实现map遍历有序
1. key有序
思路:对key排序,再遍历key输出value
代码如下:既可以从小到大排序,也可以从大到小排序
package main
import ("fmt""sort"
)
// GetMap 得到map及其所有的key
// keys : map中所有的key,已排序,从小到大
func GetMap() (result map[int]uint32, keys []int) {result = map[int]uint32{}keys = []int{}// 压入各个数据result[24] = 223result[17] = 91result[9] = 13result[11] = 330result[55] = 100// 得到各个keyfor key := range result {keys = append(keys, key)}// 给key排序,从小到大sort.Sort(sort.IntSlice(keys))// 给key排序,从大到小//sort.Sort(sort.Reverse(sort.IntSlice(keys)))return
}func main() {mapResu, keys := GetMap()// 注意:遍历keys,而不是遍历mapfor _, key := range keys {fmt.Printf("key = %v,value = %v\n", key, mapResu[key])}
}
打印结果如下:
key = 9,value = 13
key = 11,value = 330
key = 17,value = 91
key = 24,value = 223
key = 55,value = 100
2. value有序
思路是直接不用map,用struct存放key和value,实现sort接口,就可以调用sort.Sort进行排序了
golang map 排序 key value相关推荐
- golang map 删除key后内存不会自动释放,内存泄漏问题
全局map ,会有内存释放问题 package mainimport ("fmt""github.com/thoas/go-funk""math&qu ...
- golang map 排序
golang中map元素是随机无序的,所以在对map range遍历的时候也是随机的,不像php中是按顺序.所以如果想按顺序取map中的值,可以采用以下方式: import ("fmt&qu ...
- golang map 判断key是否存在
判断方法示例代码 if _, ok := map[key]; ok {// 存在 }if _, ok := map[key]; !ok {// 不存在 } 判断方式为value,ok := map[k ...
- c++ map 获取key列表_好未来Golang源码系列一:Map实现原理分析
分享老师:学而思网校 郭雨田 一.map的结构与设计原理 golang中map是一个kv对集合.底层使用hash table,用链表来解决冲突 ,出现冲突时,不是每一个key都申请一个结构通过链表串起 ...
- golang 中 map 排序
golang 中没有专门的 map 排序函数,且 map 默认是无序的,也就是你写入的顺序和打印的顺序是不一样的. m := make(map[string]string, 0) m["on ...
- Go语言中 经典的map排序方法及案例 (Golang经典编程案例)
注意:Golang中的map默认是无序的,每次遍历,得到的输出结果可能不一样. Golang中的map排序: 将map的key放到切片中: 对切片排序: 遍历切片,然后来按key来输出map的值. 案 ...
- Java小知识-----Map 按Key排序和按Value排序
Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value). 1.按键排序 jdk内置的java.util包下的Tr ...
- 关于map对key自定义排序
map对key默认是从小到大排序 也可以自定义排序 #include <iostream> #include <map> #include <string> // ...
- Map排序,获取map的第一值,根据value取key等操作(数据预处理)
这里为了以后自己再做数据预处理使用,做一下笔记. package deal;import java.io.File; import java.util.ArrayList; import java.u ...
最新文章
- Android ListView异步加载图片乱序问题,原因分析及解决方案
- 缓存框架OSCache部分源码分析
- 网络的网络——当今的互联网
- 记一次Socket.IO长链服务的性能压测
- C++——《算法分析与设计》实验报告——最长公共子序列问题
- Mysql数据库中制作千万级测试表
- 创业感悟:技术兄弟为什么一直没有起来(1)
- 代码的简单就在于——直接能看懂
- php 微信扫码给红包,关于现金红包的详细介绍
- 高斯伪谱法 matlab,Gauss 高斯伪谱法求解的 ,希望对大家有用的!代码比较复杂,但是可以运行。 matlab 263万源代码下载- www.pudn.com...
- ubuntu php命令行模式,在命令行ubuntu 16.04上切换php版本
- python中confusion matrix_python confusion matrix 混淆矩阵
- 快捷方式 java 桌面_创建桌面快捷方式
- 教育培训机构管理系统软件如何查看优惠券记录?
- 求最大公约数代码 Java_java怎么求最大公约数?
- java实现将将时间段分成8段,判断当前时间在哪一段时间里?
- SQLServer阻止保存要求重新创建表的更改,sql在一列数据前统一加字符
- KRnano打开黑屏: FATAL ERROR,【解决办法】
- MATLAB箱型图异常值/离群值处理(箱型图红色加号)
- 音频数据格式:PCM,WAV,MIDI
热门文章
- Singleton + Proxy 模式+AOP
- 架构师之路 — 数据库设计 — 关系型数据库的外键约束与关联
- NanoPi NEO Air使用十二:使用自带的fbtft驱动点亮SPI接口TFT屏幕,ST7789V
- [LeetCode] 5. Longest Palindromic Substring
- angularjs1-1
- UVa 10290 - {Sum+=i++} to Reach N
- PHP 核心知识要点
- JavaScript 事件——“事件类型”中“复合事件”和“变动事件”的注意要点
- 文件打包成zip类型文件
- tomcat 编译版本