美文网首页
08 map(字典/哈希) 迭代

08 map(字典/哈希) 迭代

作者: haokeed | 来源:发表于2017-07-27 16:37 被阅读0次

类似其它语言中的哈希表或者字典,以key-value形式存储数据
Key必须是支持==或!=比较运算的类型,不可以是函数、map或slice
Map查找比线性搜索快很多,但比使用索引访问数据的类型慢100倍
Map使用make()创建,支持 := 这种简写方式

make([keyType]valueType, cap),cap表示容量,可省略
超出容量时会自动扩容,但尽量提供一个合理的初始值
使用len()获取元素个数

var m map[int]string
m = map[int]string{}//或m = make(map[int]string)

var m map[int]string = make(map[int]string)
m[1] = "OK"
fmt.Pringln(m)
a := m[1] //这个是引用类型 如果吧m[1]删除 a就是空了 没有了

键值对不存在时自动添加,使用delete()删除某键值对
使用 for range 对map和slice进行迭代操作
delete(map,key)

复杂map
var m map[int]map[int]string
m = make(map[int]map[int]string)
m[1]=make(map[int]string)
m[1][1]="OK"
m[2]=make(map[int]string)
m[2][1]="OK"
//这里每次都要定义一个
所以需要增加一个方法来更加简便化多维map的make
a, ok := m[2][1]//如果没有定义 返回的ok为false 如果有定义返回的是true
if !ok {
m[2]=make(map[int]string)
}
m[2][1] = "good"
a, ok= m[2][1]
fmt.Println(a, ok)//输出good true

//如果多层都要进行多层次的检查一层层的make过去

迭代
比foreach高级一点的东西
for i,v := range slice{
}
for i,v := range map{
}

//和php中的foreach相同
foreach(slice或map $i=>$value){
}

sm := make([]map[int]string,5)
for _, v := range sm{
v := make(map[int]string,1)
v[1] = 'OK'
fmt.println(v)
}
fmt.println(sm)
//和php中foreach一样$value 是属于拷贝,不是引用
//如果要做到foreach下的初始化同样的 用i就可以
sm := make([]map[int]string,5)
for i := range sm{
sm[i] = make(map[int]string,1)
sm[i][1] = 'OK'
fmt.println(sm[i])
}
fmt.println(sm)

map排序
//map是无序的 排序要用slice来实现
m :=map[int]string{1: "a", 2: "b", 3: "c", 4: "d", 5: "e",}
s := make([]int,len(m))
i := 0
for k,_ := range m{
s[i] = k
i++
}
sort.Ints(s)//需要导入import包sort
fmt.Println(s)
//根据这里的s的循环来取出map里面的数据 其实是一种间接的排序

相关文章

  • 08 map(字典/哈希) 迭代

    类似其它语言中的哈希表或者字典,以key-value形式存储数据Key必须是支持==或!=比较运算的类型,不可以是...

  • 05.基本数据类型--字典

    一、概述 1). 字典的由来-哈希 哈希:一般叫做"散列",类比Java中的Map。 2). 字典特性: key-...

  • 哈希

    哈希,也叫字典、map、关联数组。在redis中,哈希类型,是指键值本身,又是一个键值对结构。哈希类型的映射关系叫...

  • 八.Go哈希字典map

    Map map以key-value的形式存储 key必须是支持==或者!=比较运算的类型,不能是函数、map或sl...

  • 字典(dict)

    字典(dict)在其他语言中被称作哈希映射(hash map)或者相关数组(associative arrays)...

  • struct

    sds结构sds主要是用来存储字符串 空间预分配 删除空间 链表 链表里面封装了一个迭代器 字典 哈希算法 哈希冲...

  • 《GO语言圣经》学习笔记(五)map与结构体

    map Map的迭代顺序是不确定的 这是故意的,每次都使用随机的遍历顺序可以强制要求程序不依赖具体的哈希函數实现。...

  • LinkedHashMap集合方法API实例演示

    LinkedHashMap 概述 基于哈希表和链表实现的Map接口,具有可预测的迭代次序。 这种实现不同于Has...

  • 4.字典

    字典 1. 字典的实现 Redis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,每个哈希表节点...

  • LinkedHashMap

    LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,...

网友评论

      本文标题:08 map(字典/哈希) 迭代

      本文链接:https://www.haomeiwen.com/subject/ecwzkxtx.html