Documentation
¶
Overview ¶
Package treeset implements a tree backed by a red-black tree.
Structure is not thread safe.
Reference: http://en.wikipedia.org/wiki/Set_%28abstract_data_type%29
Index ¶
- type OrderedIterator
- func (it *OrderedIterator[T]) DistanceTo(other ds.OrderedIterator) int
- func (it *OrderedIterator[T]) Get() (value T, found bool)
- func (it *OrderedIterator[T]) GetAt(i int) (value T, found bool)
- func (it *OrderedIterator[T]) Index() (value int, found bool)
- func (it *OrderedIterator[T]) IsAfter(other ds.OrderedIterator) bool
- func (it *OrderedIterator[T]) IsBefore(other ds.OrderedIterator) bool
- func (it *OrderedIterator[T]) IsEqual(other ds.ComparableIterator) bool
- func (it *OrderedIterator[T]) MoveTo(i int) bool
- func (it *OrderedIterator[T]) Set(value T) bool
- func (it *OrderedIterator[T]) SetAt(i int, value T) bool
- type Set
- func New[T comparable](comparator utils.Comparator[T], values ...T) *Set[T]
- func NewFromIterator[T comparable](comparator utils.Comparator[T], begin ds.ReadCompForIndexIterator[int, T]) *Set[T]
- func NewFromIterators[T comparable](comparator utils.Comparator[T], begin ds.ReadCompForIndexIterator[int, T], ...) *Set[T]
- func NewFromSlice[T comparable](comparator utils.Comparator[T], slice []T) *Set[T]
- func (set *Set[T]) Add(items ...T)
- func (set *Set[T]) Clear()
- func (set *Set[T]) Contains(items ...T) bool
- func (set *Set[T]) FromJSON(data []byte) error
- func (set *Set[T]) GetValues() []T
- func (set *Set[T]) IsEmpty() bool
- func (set *Set[T]) MakeDifferenceWith(other sets.Set[T]) sets.Set[T]
- func (set *Set[T]) MakeIntersectionWith(other sets.Set[T]) sets.Set[T]
- func (set *Set[T]) MakeUnionWith(other sets.Set[T]) sets.Set[T]
- func (set *Set[T]) MarshalJSON() ([]byte, error)
- func (set *Set[T]) NewOrderedIterator(list_ *Set[T], index int) *OrderedIterator[T]
- func (s *Set[T]) OrderedBegin(comparator utils.Comparator[T]) ds.ReadWriteOrdCompBidRandCollIterator[int, T]
- func (s *Set[T]) OrderedEnd(comparator utils.Comparator[T]) ds.ReadWriteOrdCompBidRandCollIterator[int, T]
- func (s *Set[T]) OrderedFirst(comparator utils.Comparator[T]) ds.ReadWriteOrdCompBidRandCollIterator[int, T]
- func (s *Set[T]) OrderedLast(comparator utils.Comparator[T]) ds.ReadWriteOrdCompBidRandCollIterator[int, T]
- func (set *Set[T]) Remove(_ utils.Comparator[T], items ...T)
- func (set *Set[T]) Size() int
- func (set *Set[T]) ToJSON() ([]byte, error)
- func (set *Set[T]) ToString() string
- func (set *Set[T]) UnmarshalJSON(bytes []byte) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type OrderedIterator ¶ added in v0.16.2
type OrderedIterator[T comparable] struct { *redblacktree.OrderedIterator[T, struct{}] // contains filtered or unexported fields }
Iterator holding the iterator's state
func (*OrderedIterator[T]) DistanceTo ¶ added in v0.16.2
func (it *OrderedIterator[T]) DistanceTo(other ds.OrderedIterator) int
DistanceTo implements ds.ReadWriteOrdCompBidRandCollIterator If other is of type IndexedIterator, IndexedIterator.Index() will be used, possibly executing in O(1)
func (*OrderedIterator[T]) Get ¶ added in v0.16.2
func (it *OrderedIterator[T]) Get() (value T, found bool)
PERF: These methods are inefficient, but the API is limiting here
func (*OrderedIterator[T]) GetAt ¶ added in v0.16.2
func (it *OrderedIterator[T]) GetAt(i int) (value T, found bool)
func (*OrderedIterator[T]) Index ¶ added in v0.16.2
func (it *OrderedIterator[T]) Index() (value int, found bool)
func (*OrderedIterator[T]) IsAfter ¶ added in v0.16.2
func (it *OrderedIterator[T]) IsAfter(other ds.OrderedIterator) bool
IsAfter implements ds.ReadWriteOrdCompBidRandCollIterator
func (*OrderedIterator[T]) IsBefore ¶ added in v0.16.2
func (it *OrderedIterator[T]) IsBefore(other ds.OrderedIterator) bool
IsBefore implements ds.ReadWriteOrdCompBidRandCollIterator
func (*OrderedIterator[T]) IsEqual ¶ added in v0.16.2
func (it *OrderedIterator[T]) IsEqual(other ds.ComparableIterator) bool
IsEqual implements ds.ReadWriteOrdCompBidRandCollIterator
func (*OrderedIterator[T]) MoveTo ¶ added in v0.16.2
func (it *OrderedIterator[T]) MoveTo(i int) bool
func (*OrderedIterator[T]) Set ¶ added in v0.16.2
func (it *OrderedIterator[T]) Set(value T) bool
func (*OrderedIterator[T]) SetAt ¶ added in v0.16.2
func (it *OrderedIterator[T]) SetAt(i int, value T) bool
type Set ¶
type Set[T comparable] struct { // contains filtered or unexported fields }
Set holds elements in a red-black tree
func New ¶ added in v0.16.2
func New[T comparable](comparator utils.Comparator[T], values ...T) *Set[T]
New instantiates a new empty set with the custom comparator.
func NewFromIterator ¶ added in v0.16.2
func NewFromIterator[T comparable](comparator utils.Comparator[T], begin ds.ReadCompForIndexIterator[int, T]) *Set[T]
NewFromIterator instantiates a new set containing the elements provided by the passed iterator.
func NewFromIterators ¶ added in v0.16.2
func NewFromIterators[T comparable](comparator utils.Comparator[T], begin ds.ReadCompForIndexIterator[int, T], end ds.CompIndexIterator[int]) *Set[T]
NewFromIterators instantiates a new set containing the elements provided by first, until it is equal to end. end is a sentinel and not included.
func NewFromSlice ¶ added in v0.16.2
func NewFromSlice[T comparable](comparator utils.Comparator[T], slice []T) *Set[T]
NewFromMap instantiates a new set from the provided slice.
func (*Set[T]) Add ¶
func (set *Set[T]) Add(items ...T)
Add adds the items (one or more) to the set.
func (*Set[T]) Contains ¶
Contains checks weather items (one or more) are present in the set. All items have to be present in the set for the method to return true. Returns true if no arguments are passed at all, i.e. set is always superset of empty set.
func (*Set[T]) GetValues ¶ added in v0.3.0
func (set *Set[T]) GetValues() []T
Values returns all items in the set.
func (*Set[T]) MakeDifferenceWith ¶ added in v0.3.0
Difference returns the difference between two sets. The two sets should have the same comparators, otherwise the result is empty set. The new set consists of all elements that are in "set" but not in "other". Ref: https://proofwiki.org/wiki/Definition:Set_Difference
func (*Set[T]) MakeIntersectionWith ¶ added in v0.3.0
Intersection returns the intersection between two sets. The new set consists of all elements that are both in "set" and "other". The two sets should have the same comparators, otherwise the result is empty set. Ref: https://en.wikipedia.org/wiki/Intersection_(set_theory)
func (*Set[T]) MakeUnionWith ¶ added in v0.3.0
Union returns the union of two sets. The new set consists of all elements that are in "set" or "other" (possibly both). The two sets should have the same comparators, otherwise the result is empty set. Ref: https://en.wikipedia.org/wiki/Union_(set_theory)
func (*Set[T]) MarshalJSON ¶
MarshalJSON @implements json.Marshaler
func (*Set[T]) NewOrderedIterator ¶ added in v0.16.2
func (set *Set[T]) NewOrderedIterator(list_ *Set[T], index int) *OrderedIterator[T]
NewIterator returns a stateful iterator whose values can be fetched by an index.
func (*Set[T]) OrderedBegin ¶ added in v0.16.2
func (s *Set[T]) OrderedBegin(comparator utils.Comparator[T]) ds.ReadWriteOrdCompBidRandCollIterator[int, T]
Begin returns an initialized, reversed iterator, which points to one element before it's first. Unless Next() is called, the iterator is in an invalid state.
func (*Set[T]) OrderedEnd ¶ added in v0.16.2
func (s *Set[T]) OrderedEnd(comparator utils.Comparator[T]) ds.ReadWriteOrdCompBidRandCollIterator[int, T]
End returns an initialized,reversed iterator, which points to one element afrer it's last. Unless Previous() is called, the iterator is in an invalid state.
func (*Set[T]) OrderedFirst ¶ added in v0.16.2
func (s *Set[T]) OrderedFirst(comparator utils.Comparator[T]) ds.ReadWriteOrdCompBidRandCollIterator[int, T]
First returns an initialized, reversed iterator, which points to it's first element.
func (*Set[T]) OrderedLast ¶ added in v0.16.2
func (s *Set[T]) OrderedLast(comparator utils.Comparator[T]) ds.ReadWriteOrdCompBidRandCollIterator[int, T]
Last returns an initialized, reversed iterator, which points to it's last element.
func (*Set[T]) Remove ¶
func (set *Set[T]) Remove(_ utils.Comparator[T], items ...T)
Remove removes the items (one or more) from the set.
func (*Set[T]) UnmarshalJSON ¶
UnmarshalJSON @implements json.Unmarshaler