aboutsummaryrefslogtreecommitdiff
path: root/sets.go
diff options
context:
space:
mode:
Diffstat (limited to 'sets.go')
-rw-r--r--sets.go32
1 files changed, 10 insertions, 22 deletions
diff --git a/sets.go b/sets.go
index fc30ffb..28f888d 100644
--- a/sets.go
+++ b/sets.go
@@ -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