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 +} +```