mirror of
https://github.com/donl/bimap.git
synced 2026-05-25 22:06:41 -06:00
Refactor
This commit is contained in:
parent
c4f2c78e4f
commit
00a0c7df2f
1 changed files with 28 additions and 22 deletions
50
bimap.go
50
bimap.go
|
|
@ -36,41 +36,47 @@ func (b *biMap) InverseExists(k interface{}) bool {
|
|||
}
|
||||
|
||||
func (b *biMap) Get(k interface{}) (interface{}, bool) {
|
||||
if b.Exists(k) {
|
||||
b.s.RLock()
|
||||
defer b.s.RUnlock()
|
||||
return b.forward[k], true
|
||||
if !b.Exists(k) {
|
||||
return "", false
|
||||
}
|
||||
return "", false
|
||||
b.s.RLock()
|
||||
defer b.s.RUnlock()
|
||||
return b.forward[k], true
|
||||
|
||||
}
|
||||
|
||||
func (b *biMap) InverseGet(v interface{}) (interface{}, bool) {
|
||||
if b.InverseExists(v) {
|
||||
b.s.RLock()
|
||||
defer b.s.RUnlock()
|
||||
return b.inverse[v], true
|
||||
if !b.InverseExists(v) {
|
||||
return "", false
|
||||
}
|
||||
return "", false
|
||||
b.s.RLock()
|
||||
defer b.s.RUnlock()
|
||||
return b.inverse[v], true
|
||||
|
||||
}
|
||||
|
||||
func (b *biMap) Delete(k interface{}) {
|
||||
if b.Exists(k) {
|
||||
val, _ := b.Get(k)
|
||||
b.s.Lock()
|
||||
defer b.s.Unlock()
|
||||
delete(b.forward, k)
|
||||
delete(b.inverse, val)
|
||||
if !b.Exists(k) {
|
||||
return
|
||||
}
|
||||
val, _ := b.Get(k)
|
||||
b.s.Lock()
|
||||
defer b.s.Unlock()
|
||||
delete(b.forward, k)
|
||||
delete(b.inverse, val)
|
||||
}
|
||||
|
||||
func (b *biMap) InverseDelete(v interface{}) {
|
||||
if b.InverseExists(v) {
|
||||
key, _ := b.InverseGet(v)
|
||||
b.s.Lock()
|
||||
defer b.s.Unlock()
|
||||
delete(b.inverse, v)
|
||||
delete(b.forward, key)
|
||||
if !b.InverseExists(v) {
|
||||
return
|
||||
}
|
||||
|
||||
key, _ := b.InverseGet(v)
|
||||
b.s.Lock()
|
||||
defer b.s.Unlock()
|
||||
delete(b.inverse, v)
|
||||
delete(b.forward, key)
|
||||
|
||||
}
|
||||
|
||||
func (b*biMap) Size() int{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue