Map的使用
Posted 旧时星空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Map的使用相关的知识,希望对你有一定的参考价值。
Map
Map的创建及初始化
方式一:var 变量名=map[数据类型(key)]数据类型(value)
方式二:var 变量名=make(map[数据类型(key)]数据类型(value))
方式三:var 变量名=map[数据类型(key)]数据类型(value){ key**😗*value, …}
var map1 map[int]string//没有初始化,nil类似于null
var map2=make(map[int]string)//创建
var map3=map[string]int{"Go":98,"python":93}
Map的添加和修改
Map的长度不是固定的,所以当Map中不存在value对应的key那么就会添加新的键值对,如果已存在value对应的key就会修改已存在key对应的value值。
[数据类型(key)]数据类型(value)
key存在,修改数据
key不存在,添加数据
var map1=make(map[int]string)
map1[1]="hello"
map1[2]="python"
map1[3]="java"
map1[4]="go"
fmt.Println(map1)
//map[1:hello 2:python 3:java 4:go]
//修改
map1[3]="C++"
fmt.Println(map1)
//map[1:hello 2:python 3:C++ 4:go]
Map的获取
map[key]–>value
value,ok:=map[key]
根据key获取对应的value
若key存在,value就是对应的数据,ok为true
若key不存在,value就是对应值类型的默认值,ok为false
fmt.Println(map1[3])
//C++
fmt.Println(map1[40])
//"",Map中无key=40的键值对,所以输出value默认的string的空值
v1,ok:=map1[40]
if ok{
fmt.Priintln("对应的数值是",v1)
}else{
fmt.Println("操作的key不存在,获取到的是零值:",v1)
}//操作的key不存在,获取到的是零值:
Map的删除
delete(map,key)
如果key存在,就可以直接删除
如果key不存在,删除失败
delete(map1,3)
fmt.Println(map1)
//map[1:hello 2:python 4:go]
获取Map的长度
fmt.Println(len(map1))
//3
Map的遍历
for k,v:=range map1{
fmt.Println(k,v)
}
//1 hello
//2 python
//4 go Map无序,每次循环的结果不相同
- 获取所有的key,–>切片、数组
- 进行排序
- 遍历key,—>map[key]
keys:=make([]int,0,len(map1))
fmt.Println(keys)//[]切片
for k,_:=range map1{
keys=append(keys,k)
}
fmt.Println(keys)//[1 2 4]
//冒泡排序
sort.Ints(keys)
for_,key:=range keys{
fmt.Println(key,map1[key])
}
//1 hello
//2 python
//4 go
以上是关于Map的使用的主要内容,如果未能解决你的问题,请参考以下文章
android google map supportmap片段无法在片段中初始化
在 ViewPager 片段中使用 Google Map V2 崩溃?