Documentation ¶
Index ¶
- func IndexOfValueInMultimap[T comparable, Q comparable](mm *MultiMap[T, Q], key T, value Q) int
- type CountingMultiMap
- type MultiMap
- func (mm *MultiMap[T, Q]) Add(key T, item Q)
- func (mm *MultiMap[T, Q]) AsReadOnly() ReadOnlyMultimap[T, Q]
- func (mm *MultiMap[T, Q]) Clear()
- func (mm *MultiMap[T, Q]) Clone() *MultiMap[T, Q]
- func (mm *MultiMap[T, Q]) CountOf(key T) int
- func (mm *MultiMap[T, Q]) Get(key T) ([]Q, bool)
- func (mm *MultiMap[T, Q]) Has(key T) bool
- func (mm *MultiMap[T, Q]) IsEmpty() bool
- func (mm *MultiMap[T, Q]) Keys() []T
- func (mm *MultiMap[T, Q]) Len() int
- func (mm *MultiMap[T, Q]) RemoveKey(key T)
- func (mm *MultiMap[T, Q]) Set(key T, values []Q)
- func (mm MultiMap[T, Q]) Values() []Q
- type ReadOnlyMultimap
- type Set
- func (s *Set[T]) Add(value T) bool
- func (s *Set[T]) AsSlice() []T
- func (s *Set[T]) Copy() *Set[T]
- func (s *Set[T]) Delete(value T)
- func (s *Set[T]) Equal(other *Set[T]) bool
- func (s *Set[T]) Extend(values []T)
- func (s *Set[T]) ForEach(callback func(value T) error) error
- func (s *Set[T]) Has(value T) bool
- func (s *Set[T]) Insert(value T)
- func (s *Set[T]) Intersect(other *Set[T]) *Set[T]
- func (s *Set[T]) IntersectionDifference(other *Set[T]) *Set[T]
- func (s *Set[T]) IsEmpty() bool
- func (s *Set[T]) Len() int
- func (s *Set[T]) MarshalZerologObject(e *zerolog.Event)
- func (s *Set[T]) Merge(other *Set[T])
- func (s *Set[T]) RemoveAll(other *Set[T])
- func (s *Set[T]) Subtract(other *Set[T]) *Set[T]
- func (s *Set[T]) Union(other *Set[T]) *Set[T]
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IndexOfValueInMultimap ¶ added in v1.35.0
func IndexOfValueInMultimap[T comparable, Q comparable](mm *MultiMap[T, Q], key T, value Q) int
IndexOfValueInMultimap returns the index of the value in the map for the given key.
Types ¶
type CountingMultiMap ¶ added in v1.27.0
type CountingMultiMap[T comparable, Q comparable] struct { // contains filtered or unexported fields }
CountingMultiMap is a multimap that counts the number of distinct values for each key, removing the key from the map when the count reaches zero. Safe for concurrent use.
func NewCountingMultiMap ¶ added in v1.27.0
func NewCountingMultiMap[T comparable, Q comparable]() *CountingMultiMap[T, Q]
NewCountingMultiMap constructs a new counting multimap.
func (*CountingMultiMap[T, Q]) Add ¶ added in v1.27.0
func (cmm *CountingMultiMap[T, Q]) Add(key T, value Q) bool
Add adds the given value to the map at the given key. Returns true if the value already existed in the map for the given key.
func (*CountingMultiMap[T, Q]) Remove ¶ added in v1.27.0
func (cmm *CountingMultiMap[T, Q]) Remove(key T, value Q)
Remove removes the given value for the given key from the map. If, after this removal, the key has no additional values, it is removed entirely from the map.
type MultiMap ¶
type MultiMap[T comparable, Q any] struct { // contains filtered or unexported fields }
MultiMap represents a map that can contain 1 or more values for each key.
func NewMultiMap ¶
func NewMultiMap[T comparable, Q any]() *MultiMap[T, Q]
NewMultiMap initializes a new MultiMap.
func NewMultiMapWithCap ¶
func NewMultiMapWithCap[T comparable, Q any](capacity uint32) *MultiMap[T, Q]
NewMultiMapWithCap initializes with the provided capacity for the top-level map.
func (*MultiMap[T, Q]) Add ¶
func (mm *MultiMap[T, Q]) Add(key T, item Q)
Add inserts the value into the map at the given key.
If there exists an existing value, then this value is appended *without comparison*. Put another way, a value can be added twice, if this method is called twice for the same value.
func (*MultiMap[T, Q]) AsReadOnly ¶
func (mm *MultiMap[T, Q]) AsReadOnly() ReadOnlyMultimap[T, Q]
AsReadOnly returns a read-only *copy* of the mulitmap.
func (*MultiMap[T, Q]) Clear ¶
func (mm *MultiMap[T, Q]) Clear()
Clear clears all entries in the map.
func (*MultiMap[T, Q]) CountOf ¶ added in v1.35.0
CountOf returns the number of values stored for the given key.
func (*MultiMap[T, Q]) Get ¶
Get returns the values stored in the map for the provided key and whether the key existed.
If the key does not exist, an empty slice is returned.
func (*MultiMap[T, Q]) Keys ¶
func (mm *MultiMap[T, Q]) Keys() []T
Keys returns the keys of the map.
func (*MultiMap[T, Q]) RemoveKey ¶
func (mm *MultiMap[T, Q]) RemoveKey(key T)
RemoveKey removes the given key from the map.
type ReadOnlyMultimap ¶
type ReadOnlyMultimap[T comparable, Q any] interface { // Has returns true if the key is found in the map. Has(key T) bool // Get returns the values for the given key in the map and whether the key // existed. // If the key does not exist, an empty slice is returned. Get(key T) ([]Q, bool) // IsEmpty returns true if the map is currently empty. IsEmpty() bool // Len returns the length of the map, e.g. the number of *keys* present. Len() int // Keys returns the keys of the map. Keys() []T // Values returns all values in the map. Values() []Q }
ReadOnlyMultimap is a read-only multimap.
type Set ¶
type Set[T comparable] struct { // contains filtered or unexported fields }
Set implements a very basic generic set.
func (*Set[T]) Add ¶
Add adds the given value to the set and returns true. If the value is already present, returns false.
func (*Set[T]) AsSlice ¶
func (s *Set[T]) AsSlice() []T
AsSlice returns the set as a slice of values.
func (*Set[T]) Delete ¶ added in v1.29.0
func (s *Set[T]) Delete(value T)
Delete removes the value from the set, returning nothing.
func (*Set[T]) ForEach ¶
ForEach executes the callback for each item in the set until an error is encountered.
func (*Set[T]) Insert ¶ added in v1.29.0
func (s *Set[T]) Insert(value T)
Insert adds the given value to the set.
func (*Set[T]) Intersect ¶
Intersect removes any values from this set that are not shared with the other set, returning a new set.
func (*Set[T]) IntersectionDifference ¶
IntersectionDifference removes any values from this set that are not shared with the other set. Returns the same set.