Table of Contents:

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)
}