Go實現map元素的間接排序操作

想必大家都應該知道, Go語言的map元素類型是一個無序的數據結構,

那要實現對無序元素類型map排序操作怎麼辦呢,

你可以藉助array, slice這樣的有序結構,進行間接排序操作,

也就實現了這個需求

map元素的間接排序操作

package main

import "fmt"
import "sort"

func main()  {
    // 原始map
    m := map[int]string{2: "b", 1: "a", 3: "c", 5: "e", 6: "f", 4: "d" }

    // 空slice切片
    s := make([]int, len(m))

    // slice 切片索引初始化
    index := 0

    for k, _ := range m{
        // 將變量名爲 s 的 slice 的索引爲 index 保存爲對應變量名爲 m 的 map 的鍵 k
        s[index] = k
        // 每循環一次, 變量名爲 s 的 slice 的索引值 index + 1
        index++
    }

    // 對切片 s 做排序操作, 要導入一個包 sort, 其中有一個方法 Ints 是根據數字排序操作
    sort.Ints(s)

    // 取出排序後的map元素, 你放心, 每一次取出的值排序一定是 `a    b   c   d   e   f`, 而不是無序的
    for _, v := range s{
        fmt.Printf("%s\t",m[v])
    }
}

map元素的間接排序結果

a   b   c   d   e   f   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章