Linux Shell:Map的用法
Map定义:
在使用map时,需要先声明,否则结果可能与预期不同,array可以不声明
方式1:
declare -A myMap myMap["my03"]="03"
方式2:
declare -A myMap=(["my01"]="01" ["my02"]="02") myMap["my03"]="03" myMap["my04"]="04"
Map初始化:
与array类似,可以使用括号直接初始化,也可以通过添加的方式来初始化数据,与array不同的是,括号直接初始化时使用的为一个键值对,添加元素时,下标可以不是整数
myMap["my03"]="03" myMap["my04"]="04"
输出Map所有的key、value、长度:
# 1)输出所有的key #若未使用declare声明map,则此处将输出0,与预期输出不符,此处输出语句格式比arry多了一个! echo ${!myMap[@]} #2)输出所有value #与array输出格式相同 echo ${myMap[@]} #3)输出map长度 #与array输出格式相同 echo ${#myMap[@]}
Map遍历:
#1)遍历,根据key找到对应的value for key in ${!myMap[*]};do echo $key echo ${myMap[$key]} done #2)遍历所有的key for key in ${!myMap[@]};do echo $key echo ${myMap[$key]} done #3)遍历所有的value for val in ${myMap[@]};do echo $val done
Map测试:
[root@cdh-143 shell-test]# more map-test.sh #!/bin/sh echo "一、定义Map:declare -A myMap=([\"myMap00\"]=\"00\" [\"myMap01\"]=\"01\")" declare -A myMap=(["my00"]="00" ["my01"]="01") myMap["my02"]="02" myMap["my03"]="03" echo "二、输出所有的key:" echo ${!myMap[@]} echo "三、输出所有value:" echo ${myMap[@]} echo "四、输出map的长度:" echo ${#myMap[@]} echo "五、遍历,根据key找到对应的value:" for key in ${!myMap[*]};do echo "key:"$key echo "value:"${myMap[$key]} done echo "六、遍历所有的key:" for key in ${!myMap[@]};do echo "key:"$key echo "value:"${myMap[$key]} done echo "七、遍历所有value:" for val in ${myMap[@]};do echo "value:"$val done
输出:
[root@cdh-143 shell-test]# ./map-test.sh 一、定义Map:declare -A myMap=(["myMap00"]="00" ["myMap01"]="01") 二、输出所有的key: my02 my03 my00 my01 三、输出所有value: 02 03 00 01 四、输出map的长度: 4 五、遍历,根据key找到对应的value: key:my02 value:02 key:my03 value:03 key:my00 value:00 key:my01 value:01 六、遍历所有的key: key:my02 value:02 key:my03 value:03 key:my00 value:00 key:my01 value:01 七、遍历所有value: value:02 value:03 value:00 value:01 [root@cdh-143 shell-test]#
参考《Shell中map的使用》
基础才是编程人员应该深入研究的问题,比如:
1)List/Set/Map内部组成原理|区别
2)mysql索引存储结构&如何调优/b-tree特点、计算复杂度及影响复杂度的因素。。。
3)JVM运行组成与原理及调优
4)Java类加载器运行原理
5)Java中GC过程原理|使用的回收算法原理
6)Redis中hash一致性实现及与hash其他区别
7)Java多线程、线程池开发、管理Lock与Synchroined区别
8)Spring IOC/AOP 原理;加载过程的。。。
【+加关注】。