1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- //对map的value值排序
- package luaerrdata
- import (
- "sort"
- )
- type ValSorter struct {
- Keys []string
- Vals []int
- }
- func MapValueSort(m map[string]int) *ValSorter {
- vs := NewValSorter(m)
- vs.Sort()
- return vs
- }
- func NewValSorter(m map[string]int) *ValSorter {
- vs := &ValSorter{
- Keys: make([]string, 0, len(m)),
- Vals: make([]int, 0, len(m)),
- }
- for k, v := range m {
- vs.Keys = append(vs.Keys, k)
- vs.Vals = append(vs.Vals, v)
- }
- return vs
- }
- func (vs *ValSorter) Sort() {
- sort.Sort(vs)
- }
- func (vs *ValSorter) Len() int {
- return len(vs.Vals)
- }
- func (vs *ValSorter) Less(i, j int) bool {
- return vs.Vals[i] < vs.Vals[j]
- }
- func (vs *ValSorter) Swap(i, j int) {
- vs.Vals[i], vs.Vals[j] = vs.Vals[j], vs.Vals[i]
- vs.Keys[i], vs.Keys[j] = vs.Keys[j], vs.Keys[i]
- }
|