persistent: github.com/xiaq/persistent/hashmap Index | Files

package hashmap

import "github.com/xiaq/persistent/hashmap"

Package hashmap implements persistent hashmap.

Index

Package Files

hashmap.go map.go

func HasKey Uses

func HasKey(m Map, k interface{}) bool

HasKey reports whether a Map has the given key.

type Equal Uses

type Equal func(k1, k2 interface{}) bool

Equal is the type of a function that reports whether two keys are equal.

type Hash Uses

type Hash func(k interface{}) uint32

Hash is the type of a function that returns the hash code of a key.

type Iterator Uses

type Iterator interface {
    // Elem returns the current key-value pair.
    Elem() (interface{}, interface{})
    // HasElem returns whether the iterator is pointing to an element.
    HasElem() bool
    // Next moves the iterator to the next position.
    Next()
}

Iterator is an iterator over map elements. It can be used like this:

for it := m.Iterator(); it.HasElem(); it.Next() {
    key, value := it.Elem()
    // do something with elem...
}

type Map Uses

type Map interface {
    json.Marshaler
    // Len returns the length of the map.
    Len() int
    // Index returns whether there is a value associated with the given key, and
    // that value or nil.
    Index(k interface{}) (interface{}, bool)
    // Assoc returns an almost identical map, with the given key associated with
    // the given value.
    Assoc(k, v interface{}) Map
    // Dissoc returns an almost identical map, with the given key associated
    // with no value.
    Dissoc(k interface{}) Map
    // Iterator returns an iterator over the map.
    Iterator() Iterator
}

Map is a persistent associative data structure mapping keys to values. It is immutable, and supports near-O(1) operations to create modified version of the map that shares the underlying data structure. Because it is immutable, all of its methods are safe for concurrent use.

func New Uses

func New(e Equal, h Hash) Map

New takes an equality function and a hash function, and returns an empty Map.

Package hashmap imports 6 packages (graph) and is imported by 14 packages. Updated 2020-08-03. Refresh now. Tools for package owners.