當前位置:首頁 > IT技術(shù) > 系統(tǒng)服務 > 正文

Linux Shell:Map的用法
2021-10-27 14:38:25

Map定義:

在使用map時,需要先聲明,否則結(jié)果可能與預期不同,array可以不聲明

方式1:

declare -A myMap
myMap["my03"]="03"

方式2:

declare -A myMap=(["my01"]="01" ["my02"]="02")
myMap["my03"]="03"
myMap["my04"]="04"

Map初始化:

與array類似,可以使用括號直接初始化,也可以通過添加的方式來初始化數(shù)據(jù),與array不同的是,括號直接初始化時使用的為一個鍵值對,添加元素時,下標可以不是整數(shù)

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)遍歷,根據(jù)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 "五、遍歷,根據(jù)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
五、遍歷,根據(jù)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內(nèi)部組成原理|區(qū)別
2)mysql索引存儲結(jié)構(gòu)&如何調(diào)優(yōu)/b-tree特點、計算復雜度及影響復雜度的因素。。。
3)JVM運行組成與原理及調(diào)優(yōu)
4)Java類加載器運行原理
5)Java中GC過程原理|使用的回收算法原理
6)Redis中hash一致性實現(xiàn)及與hash其他區(qū)別
7)Java多線程、線程池開發(fā)、管理Lock與Synchroined區(qū)別
8)Spring IOC/AOP 原理;加載過程的。。。
+加關(guān)注】。

本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務立即開通 >