迭代器示例集合增加切片批量添加功能
This commit is contained in:
parent
5febea0733
commit
9c8037fc96
@ -2,6 +2,7 @@ package iterator
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"iter"
|
"iter"
|
||||||
|
"slices"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Set 集合
|
// Set 集合
|
||||||
@ -23,6 +24,18 @@ func NewOrderedSet[T comparable]() *OrderedSet[T] {
|
|||||||
return &OrderedSet[T]{make([]T, 0), NewSet[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) {
|
func (s Set[T]) Add(e T) {
|
||||||
s.m[e] = struct{}{}
|
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] {
|
func (s *OrderedSet[T]) FilterMap(fn func(T) bool) iter.Seq[T] {
|
||||||
return func(yield func(T) bool) {
|
return func(yield func(T) bool) {
|
||||||
// 迭代有序切片
|
// 迭代有序切片
|
||||||
for _, v := range s.ordered {
|
for v := range slices.Values(s.ordered) {
|
||||||
if !fn(v) {
|
if !fn(v) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package iterator
|
|||||||
import (
|
import (
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"iter"
|
"iter"
|
||||||
"slices"
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -15,11 +14,9 @@ func TestSet(t *testing.T) {
|
|||||||
"gopher",
|
"gopher",
|
||||||
"javaer",
|
"javaer",
|
||||||
}
|
}
|
||||||
|
s.FromSlice(list)
|
||||||
var pull, push, filter []string
|
var pull, push, filter []string
|
||||||
expected := list[:3]
|
expected := list[:3]
|
||||||
for v := range slices.Values(list) {
|
|
||||||
s.Add(v)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 只推
|
// 只推
|
||||||
for v := range s.All() {
|
for v := range s.All() {
|
||||||
|
Loading…
Reference in New Issue
Block a user