sorting - 按字母顺序获取 map 中的键的简单方法

标签 sorting map go

在 Go 中,让 map 中的键按字母顺序排序的最简单方法是什么?这是我能做到的最短方法:

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)
}

最佳答案

您正在使用 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]

关于sorting - 按字母顺序获取 map 中的键的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2038508/

相关文章:

c++ - 快速排序 3 个值

r - 如何根据条件创建新的数据框

json - 如何在 Struts 2 JSON 插件中指定 map 属性

arrays - 对数组进行垂直排序而不是水平排序

javascript - 对两个不同值的数组进行排序,保持原始配对

c++ - 计算 map 中相同值的数量

C++:value_type 与 make_pair,哪个更快用于 map 插入?

goroutines 在打印 timecost 时相互影响

oop - 如何定义静态成员函数?

go - 原子交换映射指针导致程序卡死