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相关推荐

  1. golang map 删除key后内存不会自动释放,内存泄漏问题

    全局map ,会有内存释放问题 package mainimport ("fmt""github.com/thoas/go-funk""math&qu ...

  2. golang map 排序

    golang中map元素是随机无序的,所以在对map range遍历的时候也是随机的,不像php中是按顺序.所以如果想按顺序取map中的值,可以采用以下方式: import ("fmt&qu ...

  3. golang map 判断key是否存在

    判断方法示例代码 if _, ok := map[key]; ok {// 存在 }if _, ok := map[key]; !ok {// 不存在 } 判断方式为value,ok := map[k ...

  4. c++ map 获取key列表_好未来Golang源码系列一:Map实现原理分析

    分享老师:学而思网校 郭雨田 一.map的结构与设计原理 golang中map是一个kv对集合.底层使用hash table,用链表来解决冲突 ,出现冲突时,不是每一个key都申请一个结构通过链表串起 ...

  5. golang 中 map 排序

    golang 中没有专门的 map 排序函数,且 map 默认是无序的,也就是你写入的顺序和打印的顺序是不一样的. m := make(map[string]string, 0) m["on ...

  6. Go语言中 经典的map排序方法及案例 (Golang经典编程案例)

    注意:Golang中的map默认是无序的,每次遍历,得到的输出结果可能不一样. Golang中的map排序: 将map的key放到切片中: 对切片排序: 遍历切片,然后来按key来输出map的值. 案 ...

  7. Java小知识-----Map 按Key排序和按Value排序

    Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value). 1.按键排序 jdk内置的java.util包下的Tr ...

  8. 关于map对key自定义排序

    map对key默认是从小到大排序 也可以自定义排序 #include <iostream> #include <map> #include <string> // ...

  9. Map排序,获取map的第一值,根据value取key等操作(数据预处理)

    这里为了以后自己再做数据预处理使用,做一下笔记. package deal;import java.io.File; import java.util.ArrayList; import java.u ...

最新文章

  1. Android ListView异步加载图片乱序问题,原因分析及解决方案
  2. 缓存框架OSCache部分源码分析
  3. 网络的网络——当今的互联网
  4. 记一次Socket.IO长链服务的性能压测
  5. C++——《算法分析与设计》实验报告——最长公共子序列问题
  6. Mysql数据库中制作千万级测试表
  7. 创业感悟:技术兄弟为什么一直没有起来(1)
  8. 代码的简单就在于——直接能看懂
  9. php 微信扫码给红包,关于现金红包的详细介绍
  10. 高斯伪谱法 matlab,Gauss 高斯伪谱法求解的 ,希望对大家有用的!代码比较复杂,但是可以运行。 matlab 263万源代码下载- www.pudn.com...
  11. ubuntu php命令行模式,在命令行ubuntu 16.04上切换php版本
  12. python中confusion matrix_python confusion matrix 混淆矩阵
  13. 快捷方式 java 桌面_创建桌面快捷方式
  14. 教育培训机构管理系统软件如何查看优惠券记录?
  15. 求最大公约数代码 Java_java怎么求最大公约数?
  16. java实现将将时间段分成8段,判断当前时间在哪一段时间里?
  17. SQLServer阻止保存要求重新创建表的更改,sql在一列数据前统一加字符
  18. KRnano打开黑屏: FATAL ERROR,【解决办法】
  19. MATLAB箱型图异常值/离群值处理(箱型图红色加号)
  20. 音频数据格式:PCM,WAV,MIDI

热门文章

  1. Singleton + Proxy 模式+AOP
  2. 架构师之路 — 数据库设计 — 关系型数据库的外键约束与关联
  3. NanoPi NEO Air使用十二:使用自带的fbtft驱动点亮SPI接口TFT屏幕,ST7789V
  4. [LeetCode] 5. Longest Palindromic Substring
  5. angularjs1-1
  6. UVa 10290 - {Sum+=i++} to Reach N
  7. PHP 核心知识要点
  8. JavaScript 事件——“事件类型”中“复合事件”和“变动事件”的注意要点
  9. 文件打包成zip类型文件
  10. tomcat 编译版本