mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-14 09:42:28 +08:00
feat: add SymmetricDifference func for set
This commit is contained in:
@@ -104,6 +104,24 @@ func (s Set[T]) Intersection(other Set[T]) Set[T] {
|
|||||||
return set
|
return set
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SymmetricDifference creates a new set whose element both be contained in set s and other
|
||||||
|
func (s Set[T]) SymmetricDifference(other Set[T]) Set[T] {
|
||||||
|
set := NewSet[T]()
|
||||||
|
s.Iterate(func(value T) {
|
||||||
|
if !other.Contain(value) {
|
||||||
|
set.Add(value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
other.Iterate(func(value T) {
|
||||||
|
if !s.Contain(value) {
|
||||||
|
set.Add(value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
return set
|
||||||
|
}
|
||||||
|
|
||||||
// Minus creates an set of whose element in origin set but not in compared set
|
// Minus creates an set of whose element in origin set but not in compared set
|
||||||
func (s Set[T]) Minus(comparedSet Set[T]) Set[T] {
|
func (s Set[T]) Minus(comparedSet Set[T]) Set[T] {
|
||||||
set := NewSet[T]()
|
set := NewSet[T]()
|
||||||
|
|||||||
@@ -128,6 +128,15 @@ func TestSet_Intersection(t *testing.T) {
|
|||||||
assert.Equal(expected, intersectionSet)
|
assert.Equal(expected, intersectionSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSet_SymmetricDifference(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestSet_SymmetricDifference")
|
||||||
|
|
||||||
|
set1 := NewSet(1, 2, 3)
|
||||||
|
set2 := NewSet(2, 3, 4, 5)
|
||||||
|
|
||||||
|
assert.Equal(NewSet(1, 4, 5), set1.SymmetricDifference(set2))
|
||||||
|
}
|
||||||
|
|
||||||
func TestSet_Minus(t *testing.T) {
|
func TestSet_Minus(t *testing.T) {
|
||||||
assert := internal.NewAssert(t, "TestSet_Minus")
|
assert := internal.NewAssert(t, "TestSet_Minus")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user