アルファベット順にマップ内のキーを取得する簡単な方法

StackOverflow https://stackoverflow.com/questions/2038508

  •  19-09-2019
  •  | 
  •  

質問

ゴーでは、アルファベット順にソートマップ内のキーを取得する最も簡単な方法は何ですか?これは私がそれを行うことができます最短の方法です。

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]

他のヒント

これは最もエレガントな方法になります:

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)
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top