迭代器示例集合增加切片批量添加功能

This commit is contained in:
fantasticbin 2024-11-13 15:21:50 +08:00
parent 5febea0733
commit 9c8037fc96
2 changed files with 15 additions and 5 deletions

View File

@ -2,6 +2,7 @@ package iterator
import (
"iter"
"slices"
)
// Set 集合
@ -23,6 +24,18 @@ func NewOrderedSet[T comparable]() *OrderedSet[T] {
return &OrderedSet[T]{make([]T, 0), NewSet[T]()}
}
func (s Set[T]) FromSlice(data []T) {
for v := range slices.Values(data) {
s.Add(v)
}
}
func (s *OrderedSet[T]) FromSlice(data []T) {
for v := range slices.Values(data) {
s.Add(v)
}
}
func (s Set[T]) Add(e T) {
s.m[e] = struct{}{}
}
@ -90,7 +103,7 @@ func (s Set[T]) FilterMap(fn func(T) bool) iter.Seq[T] {
func (s *OrderedSet[T]) FilterMap(fn func(T) bool) iter.Seq[T] {
return func(yield func(T) bool) {
// 迭代有序切片
for _, v := range s.ordered {
for v := range slices.Values(s.ordered) {
if !fn(v) {
continue
}

View File

@ -3,7 +3,6 @@ package iterator
import (
"github.com/stretchr/testify/assert"
"iter"
"slices"
"testing"
)
@ -15,11 +14,9 @@ func TestSet(t *testing.T) {
"gopher",
"javaer",
}
s.FromSlice(list)
var pull, push, filter []string
expected := list[:3]
for v := range slices.Values(list) {
s.Add(v)
}
// 只推
for v := range s.All() {