package set
|
|
// StringSet 定义一个字符串集合类型,使用 map 实现
|
type StringSet map[string]struct{}
|
|
func NewStringSet() StringSet {
|
return make(StringSet)
|
}
|
|
// Add 添加元素到集合中
|
func (s StringSet) Add(elements ...string) {
|
for _, element := range elements {
|
s[element] = struct{}{}
|
}
|
}
|
|
// Remove 删除集合中的元素
|
func (s StringSet) Remove(element string) {
|
delete(s, element)
|
}
|
|
// Contains 检查元素是否存在于集合中
|
func (s StringSet) Contains(element string) bool {
|
_, exists := s[element]
|
return exists
|
}
|
|
// Size 返回集合的大小
|
func (s StringSet) Size() int {
|
return len(s)
|
}
|
|
// Elements 返回集合中的所有元素
|
func (s StringSet) Elements() []string {
|
var elements []string
|
for key := range s {
|
elements = append(elements, key)
|
}
|
return elements
|
}
|
|
// Iterate 遍历集合中的所有元素
|
func (s StringSet) Iterate(f func(string)) {
|
for key := range s {
|
f(key)
|
}
|
}
|