Go实现map元素的间接排序操作
2017-07-05 22:13
232 查看
想必大家都应该知道, Go语言的map元素类型是一个无序的数据结构,
那要实现对无序元素类型map排序操作怎么办呢,
你可以借助array, slice这样的有序结构,进行间接排序操作,
也就实现了这个需求
那要实现对无序元素类型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
相关文章推荐
- Go实现map元素的健值交换操作
- javascript实现对表格元素进行排序操作
- 栈模板的链表实现(包含头结点),实现了栈的压入,栈的弹出,返回栈顶元素,排序等操作
- javascript实现对表格元素进行排序操作
- ArrayList和LinkedList都是实现了List接口的类,他们都是元素的容器,用于存放对象的引用; 他们都可以对存放的元素进行增删改查的操作,还可以进行排序。 但是,他们还是有区别的。
- java实现单向链表CRUD,反转,排序,查找倒数第k个元素,递归输出等操作
- java的Collection或Map实现元素自动排序
- DS(栈、栈实现算术操作、队列、循环队列、二叉树实现、4种排序)
- c语言心得-----数组中对元素的操作排序,查找,插入,和删除
- JS实现table行增加行删除及元素排序
- bit_map映射实现高速排序查找
- 使用ArcGIS Engine提供的命令和工具(ICommond,ITool)实现MapView操作
- Javascript实现元素的拖曳操作[转]
- 循环中删除map元素的写法; 在C++环境下,实现一行一行地读入文本文档
- 链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定
- C语言实现二维数组操作--元素个数确定
- 采用选择排序法对链表进行排序,注意交换操作中不是对链表里某一节点里的某一元素进行交换,而是对两节点指针的交换
- map实现排序功能
- 链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定
- List<T>采用delegate快速实现排序、查找等操作