双向映射或哈希包是一种关联数据结构,其中(键、值)对形成一对一的对应。因此二元关系在每个方向上都是有效的:值也可以作为键对键。因此pair (A,b)提供了’ A ‘和’b’之间的唯一耦合,因此当’ A ‘用作键时可以找到’b’,当’b’用作键时可以找到’ A ‘。

type Map

  1. func New() *Map
  2. func (m *Map) Clear()
  3. func (m *Map) Empty() bool
  4. func (m *Map) FromJSON(data []byte) error
  5. func (m *Map) Get(key interface{}) (value interface{}, found bool)
  6. func (m *Map) GetKey(value interface{}) (key interface{}, found bool)
  7. func (m *Map) Keys() []interface{}
  8. func (m *Map) Put(key interface{}, value interface{})
  9. func (m *Map) Remove(key interface{})
  10. func (m *Map) Size() int
  11. func (m *Map) String() string
  12. func (m *Map) ToJSON() ([]byte, error)
  13. func (m *Map) Values() []interface{}

例子

  1. package main
  2. import "github.com/emirpasic/gods/maps/hashbidimap"
  3. // HashBidiMapExample to demonstrate basic usage of HashMap
  4. func main() {
  5. m := hashbidimap.New() // empty
  6. m.Put(1, "x") // 1->x
  7. m.Put(3, "b") // 1->x, 3->b (random order)
  8. m.Put(1, "a") // 1->a, 3->b (random order)
  9. m.Put(2, "b") // 1->a, 2->b (random order)
  10. _, _ = m.GetKey("a") // 1, true
  11. _, _ = m.Get(2) // b, true
  12. _, _ = m.Get(3) // nil, false
  13. _ = m.Values() // []interface {}{"a", "b"} (random order)
  14. _ = m.Keys() // []interface {}{1, 2} (random order)
  15. m.Remove(1) // 2->b
  16. m.Clear() // empty
  17. m.Empty() // true
  18. m.Size() // 0
  19. }