parent
9212b24d14
commit
a472faec29
|
@ -1,20 +0,0 @@
|
||||||
/out/
|
|
||||||
*.iml
|
|
||||||
/.idea/
|
|
||||||
*.exe
|
|
||||||
/run/
|
|
||||||
|
|
||||||
*.exe
|
|
||||||
*.exe~
|
|
||||||
*.dll
|
|
||||||
*.so
|
|
||||||
*.dylib
|
|
||||||
|
|
||||||
*.test
|
|
||||||
|
|
||||||
*.out
|
|
||||||
|
|
||||||
go.work
|
|
||||||
go.work.sum
|
|
||||||
|
|
||||||
.env
|
|
8
go.mod
8
go.mod
|
@ -1,3 +1,11 @@
|
||||||
module git.tswf.io/incredible-go/incredible-go-core
|
module git.tswf.io/incredible-go/incredible-go-core
|
||||||
|
|
||||||
go 1.22.0
|
go 1.22.0
|
||||||
|
|
||||||
|
//replace (
|
||||||
|
// "git.tswf.io/incredible-go/incredible-go-core" lateswhict => "C:\Soft\intellij\workspaces\golang\go-workspace\library\incredible-go\incredible-go-core"
|
||||||
|
//)
|
||||||
|
//
|
||||||
|
//require (
|
||||||
|
// "git.tswf.io/incredible-go/incredible-go-core" latest
|
||||||
|
//)
|
|
@ -0,0 +1,7 @@
|
||||||
|
package wrapper_map
|
||||||
|
|
||||||
|
func NewWrapperMap[K comparable, V any]() *WrapperMap[K, V] {
|
||||||
|
return &WrapperMap[K, V]{
|
||||||
|
wrappedMap: make(map[K]V),
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,96 @@
|
||||||
|
package wrapper_map
|
||||||
|
|
||||||
|
import "git.tswf.io/incredible-go/incredible-go-core/pkg/collections/array_list"
|
||||||
|
|
||||||
|
func (self *WrapperMap[K, V]) ContainsKey(key K) bool {
|
||||||
|
_, ok := self.wrappedMap[key]
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *WrapperMap[K, V]) Get(key K) *V {
|
||||||
|
val, ok := self.wrappedMap[key]
|
||||||
|
|
||||||
|
if ok {
|
||||||
|
return &val
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *WrapperMap[K, V]) GetOfDefault(key K, defaultValue V) V {
|
||||||
|
value, ok := self.wrappedMap[key]
|
||||||
|
|
||||||
|
if ok {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
return defaultValue
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *WrapperMap[K, V]) ComputeIfAbsent(key K, newValueSupplier func(K) V) V {
|
||||||
|
if !self.ContainsKey(key) {
|
||||||
|
newValue := newValueSupplier(key)
|
||||||
|
self.Put(key, newValue)
|
||||||
|
|
||||||
|
return newValue
|
||||||
|
}
|
||||||
|
|
||||||
|
return self.wrappedMap[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *WrapperMap[K, V]) GetKeys() *array_list.ArrayList[K] {
|
||||||
|
result := array_list.NewArrayList[K]()
|
||||||
|
for k := range self.wrappedMap {
|
||||||
|
result.Add(k)
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *WrapperMap[K, V]) Put(key K, value V) {
|
||||||
|
self.wrappedMap[key] = value
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *WrapperMap[K, V]) Clear() {
|
||||||
|
clear(self.wrappedMap)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *WrapperMap[K, V]) Size() int {
|
||||||
|
return len(self.wrappedMap)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *WrapperMap[K, V]) Remove(key K) *V {
|
||||||
|
if self.ContainsKey(key) {
|
||||||
|
existingValue := self.Get(key)
|
||||||
|
delete(self.wrappedMap, key)
|
||||||
|
return existingValue
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *WrapperMap[K, V]) Replace(action func(K, V) V) {
|
||||||
|
self.ForEachEntry(func(k K, v V) {
|
||||||
|
newValue := action(k, v)
|
||||||
|
self.wrappedMap[k] = newValue
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *WrapperMap[K, V]) ForEachEntry(action func(K, V)) {
|
||||||
|
for key := range self.wrappedMap {
|
||||||
|
value := self.wrappedMap[key]
|
||||||
|
action(key, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *WrapperMap[K, V]) ForEachKey(action func(K)) {
|
||||||
|
self.ForEachEntry(func(k K, v V) {
|
||||||
|
action(k)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *WrapperMap[K, V]) ForEachValue(action func(V)) {
|
||||||
|
self.ForEachEntry(func(k K, v V) {
|
||||||
|
action(v)
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package wrapper_map
|
||||||
|
|
||||||
|
type WrapperMap[K comparable, V any] struct {
|
||||||
|
wrappedMap map[K]V
|
||||||
|
}
|
Loading…
Reference in New Issue