diff options
Diffstat (limited to 'sets.go')
-rw-r--r-- | sets.go | 32 |
1 files changed, 10 insertions, 22 deletions
@@ -18,7 +18,7 @@ func NewSet[T comparable](hasher Hasher[T], values ...T) Set[T] { m: NewMap[T, struct{}](hasher), } for _, value := range values { - s.m.set(value, struct{}{}, true) + s.m = s.m.set(value, struct{}{}, true) } return s } @@ -27,24 +27,18 @@ func NewSet[T comparable](hasher Hasher[T], values ...T) Set[T] { // // This function will return a new set even if the set already contains the value. func (s Set[T]) Set(values ...T) Set[T] { - n := Set[T]{ - m: s.m.clone(), - } for _, value := range values { - n.m.set(value, struct{}{}, true) + s.m = s.m.Set(value, struct{}{}) } - return n + return s } // Delete returns a set with the given key removed. func (s Set[T]) Delete(values ...T) Set[T] { - n := Set[T]{ - m: s.m.clone(), - } for _, value := range values { - n.m.delete(value, true) + s.m = s.m.Delete(value) } - return n + return s } // Has returns true when the set contains the given value @@ -137,7 +131,7 @@ func NewSortedSet[T comparable](comparer Comparer[T], values ...T) SortedSet[T] m: NewSortedMap[T, struct{}](comparer), } for _, value := range values { - s.m.set(value, struct{}{}, true) + s.m = s.m.set(value, struct{}{}, true) } return s } @@ -146,24 +140,18 @@ func NewSortedSet[T comparable](comparer Comparer[T], values ...T) SortedSet[T] // // This function will return a new set even if the set already contains the value. func (s SortedSet[T]) Set(values ...T) SortedSet[T] { - n := SortedSet[T]{ - m: s.m.clone(), - } for _, value := range values { - n.m.set(value, struct{}{}, true) + s.m = s.m.Set(value, struct{}{}) } - return n + return s } // Delete returns a set with the given key removed. func (s SortedSet[T]) Delete(values ...T) SortedSet[T] { - n := SortedSet[T]{ - m: s.m.clone(), - } for _, value := range values { - n.m.delete(value, true) + s.m = s.m.Delete(value) } - return n + return s } // Has returns true when the set contains the given value |