func (s *HashSet[T]) SymmetricDifference(ss *HashSet[T]) *HashSet[T] {
	new := &HashSet[T]{make(map[T]struct{}, s.Size())}
	for _, v := range s.GetValues() {
		if !ss.Contains(v) {
			new.Add(v)
		}
	}
	for _, v := range ss.GetValues() {
		if !s.Contains(v) {
			new.Add(v)
		}
	}
	return new
}
// SymmetricDifference makes a set that has elements that are in one of two sets, but not both
SymmetricDifference makes a set that has elements that are in one of two sets, but not both
// SymmetricDifference makes a set that has elements that are in one of two sets but not both
func (s *HashSet[T]) SymmetricDifference(ss *HashSet[T]) *HashSet[T] {
	new := &HashSet[T]{make(map[T]struct{}, s.Size())}
	for _, v := range s.GetValues() {
		if !ss.Contains(v) {
			new.Add(v)
		}
	}
	for _, v := range ss.GetValues() {
		if !s.Contains(v) {
			new.Add(v)
		}
	}
	return new
}
func ( s * HashSet [ T ] ) SymmetricDifference ( ss * HashSet [ T ] ) * HashSet [ T ] { new := & HashSet [ T ] { make ( map [ T ] struct { } , s . Size ( ) ) } for _ , v := range s . GetValues ( ) { if ! ss . Contains ( v ) { new . Add ( v ) } } for _ , v := range ss . GetValues ( ) { if ! s . Contains ( v ) { new . Add ( v ) } } return new }
SymmetricDifference makes a set that has elements that are in one of two sets, but not both
SymmetricDifference makes a set that has elements that are in one of two sets but not both