diff --git a/docs/datastructure/hashmap.md b/docs/datastructure/hashmap.md new file mode 100644 index 0000000..ba2c042 --- /dev/null +++ b/docs/datastructure/hashmap.md @@ -0,0 +1,208 @@ +# HashMap + +HashMap is a key value map data structure. + +
+ +## Source + +- [https://github.com/duke-git/lancet/blob/main/datastructure/hashmap/hashmap.go](https://github.com/duke-git/lancet/blob/main/datastructure/hashmap/hashmap.go) + + + +## Usage + +```go +import ( + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) +``` + + + +## Index + +- [NewHashMap](#NewHashMap) +- [NewHashMapWithCapacity](#NewHashMapWithCapacity) +- [Get](#Get) +- [Put](#Put) +- [Delete](#Delete) +- [Contains](#Contains) + + + +## Documentation + +### NewHashMap + +Make a HashMap instance with default capacity is 1 << 10.
+ +Signature: + +```go +func NewHashMap() *HashMap +``` + +Example: + +```go +package main + +import ( + "fmt" + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) + +func main() { + hm := heap.NewHashMap() + fmt.Println(hm) +} +``` + +### NewHashMap + +Make a HashMap instance with given size and capacity.
+ +Signature: + +```go +func NewHashMapWithCapacity(size, capacity uint64) *HashMap +``` + +Example: + +```go +package main + +import ( + "fmt" + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) + +func main() { + hm := heap.NewHashMapWithCapacity(uint64(100), uint64(1000)) + fmt.Println(hm) +} +``` + +### Get + +Get the value of given key in hashmap
+ +Signature: + +```go +func (hm *HashMap) Get(key any) any +``` + +Example: + +```go +package main + +import ( + "fmt" + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) + +func main() { + hm := heap.NewHashMap() + val := hm.Get("a") + + fmt.Println(val) //nil +} +``` + +### Put + +Put new key value in hashmap, then return value
+ +Signature: + +```go +func (hm *HashMap) Put(key any, value any) any +``` + +Example: + +```go +package main + +import ( + "fmt" + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) + +func main() { + hm := heap.NewHashMap() + hm.Put("a", 1) + + val := hm.Get("a") + fmt.Println(val) //1 +} +``` + + + +### Delete + +Delete key-value item by given key in hashmap.
+ +Signature: + +```go +func (hm *HashMap) Delete(key any) +``` + +Example: + +```go +package main + +import ( + "fmt" + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) + +func main() { + hm := heap.NewHashMap() + hm.Put("a", 1) + val := hm.Get("a") + fmt.Println(val) //1 + + hm.Delete("a") + val = hm.Get("a") + fmt.Println(val) //nil +} +``` + + + +### Contains + +Checks if given key is in hashmap or not.
+ +Signature: + +```go +func (hm *HashMap) Contains(key any) bool +``` + +Example: + +```go +package main + +import ( + "fmt" + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) + +func main() { + hm := heap.NewHashMap() + hm.Put("a", 1) + + fmt.Println(hm.Contains("a")) //true + fmt.Println(hm.Contains("b")) //false +} +``` diff --git a/docs/datastructure/hashmap_zh-CN.md b/docs/datastructure/hashmap_zh-CN.md new file mode 100644 index 0000000..bd50746 --- /dev/null +++ b/docs/datastructure/hashmap_zh-CN.md @@ -0,0 +1,209 @@ +# HashMap + +HashMap 数据结构实现 + + + +## 源码 + +- [https://github.com/duke-git/lancet/blob/main/datastructure/hashmap/hashmap.go](https://github.com/duke-git/lancet/blob/main/datastructure/hashmap/hashmap.go) + + + +## 用法 + +```go +import ( + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) +``` + + + +## 目录 + +- [HashMap](#hashmap) + - [源码](#源码) + - [用法](#用法) + - [目录](#目录) + - [API 文档](#api-文档) + - [NewHashMap](#newhashmap) + - [NewHashMapWithCapacity](#newhashmapwithcapacity) + - [Get](#get) + - [Put](#put) + - [Delete](#delete) + - [Contains](#contains) + + + +## API 文档 + +### NewHashMap + +新建默认容量(1 << 10)的HashMap指针实例
+ +函数签名: + +```go +func NewHashMap() *HashMap +``` + +例子: + +```go +package main + +import ( + "fmt" + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) + +func main() { + hm := heap.NewHashMap() + fmt.Println(hm) +} +``` + +### NewHashMapWithCapacity + +新建指定容量和长度的HashMap指针实例.
+ +函数签名: + +```go +func NewHashMapWithCapacity(size, capacity uint64) *HashMap +``` + +例子: + +```go +package main + +import ( + "fmt" + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) + +func main() { + hm := heap.NewHashMapWithCapacity(uint64(100), uint64(1000)) + fmt.Println(hm) +} +``` + +### Get + +在hashmap中根据key获取值
+ +函数签名: + +```go +func (hm *HashMap) Get(key any) any +``` + +例子: + +```go +package main + +import ( + "fmt" + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) + +func main() { + hm := heap.NewHashMap() + val := hm.Get("a") + + fmt.Println(val) //nil +} +``` + +### Put + +将key-value放入hashmap中
+ +函数签名: + +```go +func (hm *HashMap) Put(key any, value any) any +``` + +例子: + +```go +package main + +import ( + "fmt" + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) + +func main() { + hm := heap.NewHashMap() + hm.Put("a", 1) + + val := hm.Get("a") + fmt.Println(val) //1 +} +``` + +### Delete + +将指定的key从hashmap中删除
+ +函数签名: + +```go +func (hm *HashMap) Delete(key any) +``` + +例子: + +```go +package main + +import ( + "fmt" + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) + +func main() { + hm := heap.NewHashMap() + hm.Put("a", 1) + val := hm.Get("a") + fmt.Println(val) //1 + + hm.Delete("a") + val = hm.Get("a") + fmt.Println(val) //nil +} +``` + +### Contains + +判断hashmap中是否包含指定的key
+ +函数签名: + +```go +func (hm *HashMap) Contains(key any) bool +``` + +例子: + +```go +package main + +import ( + "fmt" + hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap" +) + +func main() { + hm := heap.NewHashMap() + hm.Put("a", 1) + + fmt.Println(hm.Contains("a")) //true + fmt.Println(hm.Contains("b")) //false +} +```