map的相關知識

2021-09-02 07:09:08 字數 1812 閱讀 5625

//map的本質是對雜湊表的引用

//map中元素的迭代順序是不固定的

//不同的實現方法會使用不同的雜湊演算法,得到不同的元素順序

①map的建立與宣告。鍵的型別k必須是可以通過==來進行比較的

ages1 := make(map[string]int)

ages1["vila"] = 22

ages1["anny"] = 21

ages2 := map[string]int

fmt.println(ages2)

fmt.printf("%t,%v\n", ages2, ages2["tom"])

②用delete內建函式刪除map中的乙個元素

//即使刪除的鍵不在map中,對應的操作也是安全的,並返回值型別的零值

delete(ages2, "linc")

fmt.println(ages2)

③map元素不是乙個變數,不可獲取它的位址

//_=&ages2[「tom」],編譯錯誤

④用for迴圈來遍歷map

for name, age := range ages1
⑤map型別的零值是nil,即沒有引用任何雜湊表

var ages3 map[string]int

fmt.println(ages3 == nil)

fmt.println(len(ages3) == 0)

fmt.println(ages1["bob"]) //鍵不在map中,得到map值型別的0值

⑥判斷某元素是否存在於map

if age, ok := ages1["bob"]; ok
⑦map不可比較,只能和nil比較,但可以自己寫函式比較

a := func(x, y map[string]int) bool 

//比較map的鍵值

for k, xv := range x

} return true

}(ages1, ages2)

fmt.print("比較map結果:")

fmt.println(a)

⑧字串集合

seen := make(map[string]bool)

input := bufio.newscanner(os.stdin)

//scan掃瞄os.stdin產生token

for input.scan()

} if err := input.err(); err != nil

⑨通過幫助函式使用切片作為map的鍵

/*var m = make(map[string]int)

func k(list string) string

func add(list string)

func count(list string) int */

list := string

add(list)

z:=count(list)

m["w"]=10

fmt.println(m["w"])

fmt.println(z)

map的相關知識

今天刷到一道leetcode題,題目是這樣的 題目大概意思就是找出具有相同的字母,但是字母之間的順序是不同的單詞,一開始我是設想設定乙個雜湊表,利用字母對映來記錄單詞中每個字母出現的次數,但是後面將字母異位詞放在一起不能實現,參 使用了map函式,發現自己對這一知識不懂,於是學習一下 參考這篇文章m...

Map集合相關知識

1 map集合 map集合區別於collection集合,是它是以鍵值對 key value 儲存資料。可以儲存一對物件,即可以儲存兩個物件,而且這兩個物件是key value結構的,就是這個兩個物件是有對映關係的。這種結構的最大的好處,就是可以根據key找到關聯的value值。map介面的定義 p...

Map相關知識總結

map主要用於儲存健值對,根據鍵得到值,因此不允許鍵重複 重複了覆蓋了 但允許值重複。hashmap 是乙個最常用的map,它根據鍵的hashcode 值儲存資料,根據鍵可以直接獲取它的值,具有很快的訪問速度,遍歷時,取得資料的順序是完全隨機的。hashmap最多隻允許一條記錄的鍵為null 允許多...