طريقة سهلة للحصول على المفاتيح في خريطة حسب الطلب الأبجدي
سؤال
عند الذهاب، ما هي أسهل طريقة للحصول على المفاتيح في خريطة فرزها أبجديا؟ هذه هي أقصر طريقة يمكنني القيام بذلك:
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)
}
لا تنتمي إلى StackOverflow