按字母顺序获取地图中的键的简单方法
Posted
技术标签:
【中文标题】按字母顺序获取地图中的键的简单方法【英文标题】:Easy way to get the keys in a map in alphabetical order 【发布时间】:2011-01-03 13:19:59 【问题描述】:在 Go 中,让地图中的键按字母顺序排序的最简单方法是什么?这是我能做到的最短方法:
package main
import "container/vector"
import "fmt"
import "sort"
func main()
m := map[string]string "b":"15", "z":"123123", "x":"sdf", "a":"12"
var keys vector.StringVector;
for k,_ := range ( m )
keys.Push(k)
sort.Sort( &keys )
fmt.Printf("%v\n", keys)
【问题讨论】:
【参考方案1】:您正在使用 StringVector 对字符串数组进行排序。为了最大限度地减少开销,您可以对字符串数组进行排序。
package main
import (
"fmt"
"sort"
)
func main()
m := map[string]string"b": "15", "z": "123123", "x": "sdf", "a": "12"
mk := make([]string, len(m))
i := 0
for k, _ := range m
mk[i] = k
i++
sort.Strings(mk)
fmt.Println(mk)
输出:
[a b x z]
【讨论】:
SortStrings
函数似乎在当前(2012 年 3 月)Go 中消失了。现在似乎只是Strings
(即sort.Strings(mk)
)【参考方案2】:
那将是最优雅的方法:
package main
import (
"fmt"
"sort"
)
func main()
m := map[string]string"b": "15", "z": "123123", "x": "sdf", "a": "12"
keys := make([]string, 0, len(m))
for key := range m
keys = append(keys, key)
sort.Strings(keys)
fmt.Println(keys)
【讨论】:
BenchmarkFirst-4 5000000 367 ns/op 96 B/op 2 allocs/op BenchmarkSecond-4 5000000 352 ns/op 96 B/op 2 allocs/op PASS ok slice 4.383s以上是关于按字母顺序获取地图中的键的简单方法的主要内容,如果未能解决你的问题,请参考以下文章