Go语言中map进行有序排列!
前言:
Go面试技术点。用于记录学习复习总结!
对map进行有序的排列:
明确Map是一种无序键值对集合!如果需要按照特定的顺序遍历Map,可以将其转化成切片并进行排序
具体的步骤:将Map中键(keys)拷贝至一个新的切片中,然后使用sort包中的函数对这个切片进行排序。在排序过程中,通过自定义的Comparator来指定不同的排序规则。
package main
import (
"fmt"
"sort"
)
func main() {
// 初始化 Map
scores := map[string]int{
"Tom": 90,
"Jerry": 80,
"Bob": 85,
"Mike": 92,
}
// 将 Map 中的键复制到一个新的切片中
keys := make([]string, 0, len(scores))
for key := range scores {
keys = append(keys, key)
}
// 对切片进行排序 < 表示升序 >表示降序
//参数一:切片 参数二:比较函数
sort.Slice(keys, func(i, j int) bool {
// 内部借助快速排序算法
return scores[keys[i]] < scores[keys[j]]
})
// 打印排序后的结果
for _, key := range keys {
/*
Jerry: 80
Bob: 85
Tom: 90
Mike: 92
*/
fmt.Printf("%s: %d\n", key, scores[key])
}
}
注意:
需要注意的是,Map 的排序依赖于键的顺序,因此如果 Map 中的键不是基本类型,则可能需要先将其转化为可比较的形式。另外,排序操作会生成一个新的切片,因此如果 Map 中存在大量数据时,这种方法可能会消耗大量的内存和计算资源。