Set
package collections
type Set[T comparable] struct {
data map[T]struct{}
}
func NewSet[T comparable]() *Set[T] {
return &Set[T]{
data: make(map[T]struct{}, 2),
}
}
func (s *Set[T]) Add(x T) {
s.data[x] = struct{}{}
}
func (s *Set[T]) Has(x T) bool {
_, ex := s.data[x]
return ex
}
func (s *Set[T]) Size() int {
return len(s.data)
}
type Set[T comparable] struct {
data map[T]struct{}
}
func NewSet[T comparable]() *Set[T] {
return &Set[T]{
data: make(map[T]struct{}, 2),
}
}
func (s *Set[T]) Add(x T) {
s.data[x] = struct{}{}
}
func (s *Set[T]) Has(x T) bool {
_, ex := s.data[x]
return ex
}
func (s *Set[T]) Size() int {
return len(s.data)
}