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  }