Go语言map排序(key/value排序)
Go语言map排序(key/value排序)
- 1、前言
- 2、实现map遍历有序
- 2.1 key有序
- 2.1.1 从小到大排序
- 2.1.2 从大到小排序
- 2.2 value有序
- 2.2.1 从小到大排序
- 2.2.2 从大到小排序
1、前言
Go语言的map是无序的,多次遍历map的结果可能是不同的,比如:
package mainimport ("fmt"
)func Map() (result map[int]uint32) {result = map[int]uint32{}// 插入各个数据result[24] = 240result[17] = 170result[9] = 90result[11] = 110result[55] = 550return
}
func main() {mapResult := Map()// 遍历mapfor key, value := range mapResult {fmt.Printf("key = %v,value = %v\n", key, value)}
}
第一次遍历结果如下:
第二次遍历结果如下:
可以看到两次遍历的结果是不同的
2、实现map遍历有序
2.1 key有序
思路:对key排序,再遍历key输出value
2.1.1 从小到大排序
sort.Sort(sort.IntSlice(keys))
代码如下:
package mainimport ("fmt""sort"
)func Map() (result map[int]uint32, keys []int) {result = map[int]uint32{}keys = []int{}// 插入各个数据result[24] = 240result[17] = 170result[9] = 90result[11] = 110result[55] = 550// 得到各个keyfor key := range result {keys = append(keys, key)}// 给key排序,从小到大sort.Sort(sort.IntSlice(keys))return
}
func main() {mapResult, keys := Map()// 遍历mapfor _, key := range keys {fmt.Printf("key = %v,value = %v\n", key, mapResult[key])}
}
结果:
2.1.2 从大到小排序
sort.Sort(sort.Reverse(sort.IntSlice(keys)))
代码如下:
package mainimport ("fmt""sort"
)func Map() (result map[int]uint32, keys []int) {result = map[int]uint32{}keys = []int{}// 插入各个数据result[24] = 240result[17] = 170result[9] = 90result[11] = 110result[55] = 550// 得到各个keyfor key := range result {keys = append(keys, key)}// 给key排序,从大到小sort.Sort(sort.Reverse(sort.IntSlice(keys)))return
}
func main() {mapResult, keys := Map()// 遍历mapfor _, key := range keys {fmt.Printf("key = %v,value = %v\n", key, mapResult[key])}
}
结果:
2.2 value有序
用struct存放key和value,实现sort接口,就可以调用sort.Sort进行排序了
2.2.1 从小到大排序
package mainimport ("fmt""sort"
)func main() {mapInfo := map[string]int32{"roy":18,"kitty":16,"hugo":21,"tina":35,"jason":23,}type peroson struct {Name stringAge int32}var lstPerson []perosonfor k, v := range mapInfo {lstPerson = append(lstPerson, peroson {k, v})}sort.Slice(lstPerson, func(i, j int) bool {return lstPerson[i].Age < lstPerson[j].Age // 升序})fmt.Println(lstPerson)
}
结果:
2.2.2 从大到小排序
package mainimport ("fmt""sort"
)func main() {mapInfo := map[string]int32{"roy": 18,"kitty": 16,"hugo": 21,"tina": 35,"jason": 23,}type peroson struct {Name stringAge int32}var lstPerson []perosonfor k, v := range mapInfo {lstPerson = append(lstPerson, peroson{k, v})}sort.Slice(lstPerson, func(i, j int) bool {return lstPerson[i].Age > lstPerson[j].Age // 降序})fmt.Println(lstPerson)
}
结果:
Go语言map排序(key/value排序)相关推荐
- java map key 升序_Java Map 按 key 升序排序
最近开发微信和支付宝的服务端支付,涉及到字典的排序和 url 参数转换成字典的操作,整理了一个工具类: import java.util.ArrayList; import java.util.Col ...
- 关于map对key自定义排序
map对key默认是从小到大排序 也可以自定义排序 #include <iostream> #include <map> #include <string> // ...
- go语言map按照key,value进行排序
1. go语言的map是无序的,多次遍历map的结果可能是不同的 举例如下: package main import ("fmt" ) // GetMap 得到map func G ...
- Java小知识-----Map 按Key排序和按Value排序
Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value). 1.按键排序 jdk内置的java.util包下的Tr ...
- Map根据Key值进行排序(升序加降序)
Map根据Key值进行排序 如果这篇文章对你有帮助的话,希望可以给博主点个赞,感谢!! 今天在写一个功能的时候,需要根据日期进行分组,于是我从数据库查找的时候就使用order by create_ti ...
- stream流倒序排序_java8 stream 操作map根据key或者value排序的实现|chu
引言 最近小编自己一个人在负责一个项目的后台开发,其中有一部分是统计相关的功能,所以需要一些排序或者分组的操作,之前这种操作小编觉得还是比较麻烦的,虽热有一些现成的工具类,但是工具类的写法也是比较复杂 ...
- Go 学习笔记(12)— 字典map定义、初始化、读取字典、删除字典、清空字典、map 按 key 进行有序遍历
Go 中字典也叫做 map , map 是一种无序的键值对的集合. map 最重要的一点是通过 key 来快速检索数据, key 类似于索引,指向数据的值. 1. 字典定义 可以使用内建函数 make ...
- Map 四种获取 key 和 value 值的方法,以及对 map 中的元素排序
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 获取map的值主要有四种方法,分为两类: 调用 map.keySet() 方法来获取 key ...
- Map四种获取key和value值的方法,以及对map中的元素排序
2019独角兽企业重金招聘Python工程师标准>>> 获取map的值主要有四种方法,这四种方法又分为两类: 一类是调用map.keySet()方法来获取key和value的值, 另 ...
最新文章
- MLNG_机器学习的动机与应用
- 快速记忆python函数-【速学速记】Python 高阶函数
- 分布式项目启动时报错:Duplicate spring bean id XXX
- mysql 存储过程 嵌套if_mysql存储过程if嵌套if的写法
- Dottrace跟踪代码执行时间
- 洛谷 P1849 [USACO12MAR]拖拉机Tractor
- Git - 修改用户名
- 详解Linux下通过yum安装Mariadb/MySQL数据库(腾讯云也适用)
- activemq jdbc mysql_activeMQ JDBC Master Slave
- scala-数组操作
- 计算机更新安装失败,电脑更新安装失败
- 剑指offer——面试题42-1:左旋转字符串
- 7天下载破千万,让你“变老”的FaceApp如何爆发式增长?
- static关键字的用法
- 2020电子设计竞赛G题 - 非接触物体尺寸形态测量
- 第十一届蓝桥杯省赛:纪念日
- unity实战 手机屏幕适配
- Android开发唯一的出路:进阶学习,android实战pdf
- 华为云平台部署虚拟机-SinoDB
- 诺基亚e65 ucweb 6.7正式免签名下载
热门文章
- linux arm panic,ARM Linux 内核 panic 之cache 一致性 ——Cortex-A9多核cache和TLB一致性广播...
- php wasm,wasm总结
- iqooz6和iqooneo6se区别 iqoo z6和iqoo neo6se哪个好
- 【WORD文档部分消失】元素结束标记中的名称必须与开始标记中的元素类型相匹配
- 巧用Photoshop路径造型做连体字特效
- Android APP检查设备是否为平板
- 怀念旧时那一丝丝温暖的味道
- Python文本词频率统计---学习记录
- 小度音箱出bug 刷脸解锁可用照片替代
- golang goroutine实现_Go语言潜力有目共睹,但它的Goroutine机制底层原理你了解吗?...