parent
075757669c
commit
810360258d
@ -0,0 +1,40 @@ |
||||
package pkg |
||||
|
||||
type Set[T comparable] map[T]struct{} |
||||
|
||||
func (s Set[T]) Add(items ...T) { |
||||
for _, v := range items { |
||||
s[v] = struct{}{} |
||||
} |
||||
} |
||||
|
||||
func (s Set[T]) AddWithOutEmpty(items ...T) { |
||||
var empty T |
||||
for _, v := range items { |
||||
if v == empty { |
||||
continue |
||||
} |
||||
s[v] = struct{}{} |
||||
} |
||||
} |
||||
|
||||
func (s Set[T]) Has(data T) bool { |
||||
_, ok := s[data] |
||||
return ok |
||||
} |
||||
|
||||
func (s Set[T]) Delete(data T) { |
||||
delete(s, data) |
||||
} |
||||
|
||||
func (s Set[T]) Count() int32 { |
||||
return int32(len(s)) |
||||
} |
||||
|
||||
func (s Set[T]) ToSlice() []T { |
||||
res := make([]T, 0, len(s)) |
||||
for k := range s { |
||||
res = append(res, k) |
||||
} |
||||
return res |
||||
} |
@ -1,4 +1,4 @@ |
||||
package pkg |
||||
package tree |
||||
|
||||
type Node[T any] struct { |
||||
Data T `json:"data"` |
Loading…
Reference in new issue