迭代器示例集合增加切片批量添加功能
This commit is contained in:
parent
5febea0733
commit
9c8037fc96
@ -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
|
||||
}
|
||||
|
@ -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() {
|
||||
|
Loading…
Reference in New Issue
Block a user