アルゴリズム図鑑を参考に、アルゴリズムとデータ構造を学ぶ。
実装はgithub - bmf-san/road-to-algorithm-masterにも置いてある。
以下はハッシュ値の衝突を考慮していない粗雑なハッシュマップ。
package main
import "fmt"
// A HashMap is hash map.
type HashMap struct {
data map[int]string
}
// hash is create a hash key.
func hash(key int) int {
return key % 5
}
// put is add key to hash map.
func (h HashMap) put(key int, value string) {
hash := hash(key)
if h.data == nil {
h.data = make(map[int]string)
}
h.data[hash] = value
}
// get is get a value from hash map.
func (h HashMap) get(key int) string {
var hash int = hash(key)
return h.data[hash]
}
func main() {
h := &HashMap{
data: make(map[int]string),
}
h.put(1, "foo")
h.put(2, "bar")
fmt.Printf("%#v\n", h.get(1))
fmt.Printf("%#v\n", h.get(2))
}
関連書籍