From 90fd331c75708d076d6e347294e06b244214db2b Mon Sep 17 00:00:00 2001 From: Am Laher Date: Wed, 28 Dec 2022 21:49:50 +1300 Subject: set/sorted-set: Items() to return slice of items --- sets.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'sets.go') diff --git a/sets.go b/sets.go index b333bb8..fc30ffb 100644 --- a/sets.go +++ b/sets.go @@ -58,6 +58,17 @@ func (s Set[K]) Len() int { return s.m.Len() } +// Items returns a slice of the items inside the set +func (s Set[T]) Items() []T { + r := make([]T, 0, s.Len()) + itr := s.Iterator() + for !itr.Done() { + v, _ := itr.Next() + r = append(r, v) + } + return r +} + // Iterator returns a new iterator for this set positioned at the first value. func (s Set[T]) Iterator() *SetIterator[T] { itr := &SetIterator[T]{mi: s.m.Iterator()} @@ -166,6 +177,17 @@ func (s SortedSet[K]) Len() int { return s.m.Len() } +// Items returns a slice of the items inside the set +func (s SortedSet[T]) Items() []T { + r := make([]T, 0, s.Len()) + itr := s.Iterator() + for !itr.Done() { + v, _ := itr.Next() + r = append(r, v) + } + return r +} + // Iterator returns a new iterator for this set positioned at the first value. func (s SortedSet[T]) Iterator() *SortedSetIterator[T] { itr := &SortedSetIterator[T]{mi: s.m.Iterator()} -- cgit v1.2.3