github.com/songzhibin97/go-baseutils@v0.0.2-0.20240302024150-487d8ce9c082/base/bmap/map.go (about) 1 package bmap 2 3 type ComparableBMap[K comparable, V comparable] interface { 4 AnyBMap[K, V] 5 6 EqualByMap(m map[K]V) bool 7 EqualByBMap(m AnyBMap[K, V]) bool 8 } 9 10 type AnyBMap[K comparable, V any] interface { 11 ToMetaMap() map[K]V // no concurrency safe! 12 13 Keys() []K 14 Values() []V 15 EqualFuncByMap(m map[K]V, eq func(V1, V2 V) bool) bool 16 EqualFuncByBMap(m AnyBMap[K, V], eq func(V1, V2 V) bool) bool 17 Clear() 18 CloneToMap() map[K]V 19 CloneToBMap() AnyBMap[K, V] 20 CopyByMap(dst map[K]V) 21 CopyByBMap(dst AnyBMap[K, V]) 22 DeleteFunc(del func(K, V) bool) 23 24 Marshal() ([]byte, error) 25 Unmarshal(data []byte) error 26 27 Size() int 28 IsEmpty() bool 29 IsExist(K) bool // k有对应value 返回true 30 ContainsKey(K) bool 31 ContainsValue(V) bool 32 ForEach(func(K, V)) 33 Get(K) (V, bool) // 获取 k对应的value, 如果不存在返回false 34 GetOrDefault(k K, defaultValue V) V // 获取 k对应的value, 如果不存在返回defaultValue 35 Put(K, V) 36 PuTIfAbsent(K, V) bool // 设置如果k对应value不存在的情况下设置成功 37 Delete(K) // 删除 k对应的value, 如果存在返回旧值 38 DeleteIfPresent(K) (V, bool) // 删除 k对应的value, 如果存在返回true 39 MergeByMap(map[K]V, func(K, V) bool) // 根据返回进行合并 func(k, ov) 传入key和当前nmap的对应key的value值进行冲突处理 return true 进行替换 false则跳过 40 MergeByBMap(AnyBMap[K, V], func(K, V) bool) // 根据返回进行合并 func(k, ov) 传入key和当前nmap的对应key的value值进行冲突处理 return true 进行替换 false则跳过 41 Replace(k K, ov, nv V) bool // 替换 k对应的value等于ov则设置为nv 42 }