20 lines
387 B
Go
20 lines
387 B
Go
package utils
|
|
|
|
import "sort"
|
|
|
|
type Pair[K comparable, V any] struct {
|
|
Key K
|
|
Value V
|
|
}
|
|
|
|
func SortMap[K comparable, V any](m map[K]V, less func(i, j Pair[K, V]) bool) []Pair[K, V] {
|
|
pairs := make([]Pair[K, V], 0, len(m))
|
|
for k, v := range m {
|
|
pairs = append(pairs, Pair[K, V]{k, v})
|
|
}
|
|
sort.Slice(pairs, func(i, j int) bool {
|
|
return less(pairs[i], pairs[j])
|
|
})
|
|
return pairs
|
|
}
|