diff --git a/docs/api/packages/slice.md b/docs/api/packages/slice.md index 1eaa31e..5130f37 100644 --- a/docs/api/packages/slice.md +++ b/docs/api/packages/slice.md @@ -6,7 +6,8 @@ slice 包包含操作切片的方法集合。 ## 源码: -- [https://github.com/duke-git/lancet/blob/main/slice/slice.go](https://github.com/duke-git/lancet/blob/main/slice/slice.go) +- [https://github.com/duke-git/lancet/blob/main/slice/slice.go](https://github.com/duke-git/lancet/blob/main/slice/slice.go) +- [https://github.com/duke-git/lancet/blob/main/slice/slice_concurrent.go](https://github.com/duke-git/lancet/blob/main/slice/slice_concurrent.go)
@@ -61,6 +62,7 @@ import ( - [IndexOf](#IndexOf) - [LastIndexOf](#LastIndexOf) - [Map](#Map) +- [MapConcurrent](#MapConcurrent) - [FilterMap](#FilterMap) - [FlatMap](#FlatMap) - [Merge](#Merge) @@ -88,7 +90,7 @@ import ( - [UniqueBy](#UniqueBy) - [UniqueByComparator](#UniqueByComparator) - [UniqueByField](#UniqueByField) -- [UniqueByParallel](#UniqueByParallel) +- [UniqueByConcurrent](#UniqueByConcurrent) - [Union](#Union) - [UnionBy](#UnionBy) - [UpdateAt](#UpdateAt) @@ -1507,7 +1509,7 @@ func main() { result := slice.MapConcurrent(nums, 4, func(_, n int) int { return n * n }) fmt.Println(result) - + // Output: // [1 4 9 16 25 36] } @@ -2395,14 +2397,14 @@ func main() { } ``` -### UniqueByParallel +### UniqueByConcurrent

并发的从输入切片中移除重复元素,结果保持元素的顺序。

函数签名: ```go -func UniqueByParallel[T comparable](slice []T, numOfThreads int, comparator func(item T, other T) bool) []T +func UniqueByConcurrent[T comparable](slice []T, numOfThreads int, comparator func(item T, other T) bool) []T ``` 示例: @@ -2418,7 +2420,7 @@ func main() { numOfThreads := 4 comparator := func(item int, other int) bool { return item == other } - result := slice.UniqueByParallel(nums, numOfThreads, comparator) + result := slice.UniqueByConcurrent(nums, numOfThreads, comparator) fmt.Println(result) // Output: diff --git a/docs/en/api/packages/slice.md b/docs/en/api/packages/slice.md index 2ee2ab1..6a57bc0 100644 --- a/docs/en/api/packages/slice.md +++ b/docs/en/api/packages/slice.md @@ -6,7 +6,8 @@ Package slice implements some functions to manipulate slice. ## Source: -- [https://github.com/duke-git/lancet/blob/main/slice/slice.go](https://github.com/duke-git/lancet/blob/main/slice/slice.go) +- [https://github.com/duke-git/lancet/blob/main/slice/slice.go](https://github.com/duke-git/lancet/blob/main/slice/slice.go) +- [https://github.com/duke-git/lancet/blob/main/slice/slice_concurrent.go](https://github.com/duke-git/lancet/blob/main/slice/slice_concurrent.go)
@@ -89,7 +90,7 @@ import ( - [UniqueBy](#UniqueBy) - [UniqueByComparator](#UniqueByComparator) - [UniqueByField](#UniqueByField) -- [UniqueByParallel](#UniqueByParallel) +- [UniqueByConcurrent](#UniqueByConcurrent) - [Union](#Union) - [UnionBy](#UnionBy) - [UpdateAt](#UpdateAt) @@ -1506,7 +1507,7 @@ func main() { result := slice.MapConcurrent(nums, 4, func(_, n int) int { return n * n }) fmt.Println(result) - + // Output: // [1 4 9 16 25 36] } @@ -2394,14 +2395,14 @@ func main() { } ``` -### UniqueByParallel +### UniqueByConcurrent

Removes duplicate elements from the slice by parallel.

Signature: ```go -func UniqueByParallel[T comparable](slice []T, numOfThreads int, comparator func(item T, other T) bool) []T +func UniqueByConcurrent[T comparable](slice []T, numOfThreads int, comparator func(item T, other T) bool) []T ``` Example: @@ -2417,7 +2418,7 @@ func main() { numOfThreads := 4 comparator := func(item int, other int) bool { return item == other } - result := slice.UniqueByParallel(nums, numOfThreads, comparator) + result := slice.UniqueByConcurrent(nums, numOfThreads, comparator) fmt.Println(result) // Output: diff --git a/slice/slice_parallel.go b/slice/slice_concurrent.go similarity index 95% rename from slice/slice_parallel.go rename to slice/slice_concurrent.go index 838c6d2..1876777 100644 --- a/slice/slice_parallel.go +++ b/slice/slice_concurrent.go @@ -41,7 +41,7 @@ func MapConcurrent[T any, U any](slice []T, numOfThreads int, iteratee func(inde // If numOfThreads is less than or equal to 0, it will be set to 1 // The comparator function should return true if the two elements are equal // Play: todo -func UniqueByParallel[T comparable](slice []T, numOfThreads int, comparator func(item T, other T) bool) []T { +func UniqueByConcurrent[T comparable](slice []T, numOfThreads int, comparator func(item T, other T) bool) []T { if numOfThreads <= 0 { numOfThreads = 1 } else if numOfThreads > len(slice) { diff --git a/slice/slice_example_test.go b/slice/slice_example_test.go index 68d3982..2a709b9 100644 --- a/slice/slice_example_test.go +++ b/slice/slice_example_test.go @@ -1186,12 +1186,12 @@ func ExampleLeftPadding() { // [0 0 0 1 2 3 4 5] } -func ExampleUniqueByParallel() { +func ExampleUniqueByConcurrent() { nums := []int{1, 2, 3, 1, 2, 4, 5, 6, 4, 7} numOfThreads := 4 comparator := func(item int, other int) bool { return item == other } - result := UniqueByParallel(nums, numOfThreads, comparator) + result := UniqueByConcurrent(nums, numOfThreads, comparator) fmt.Println(result) diff --git a/slice/slice_test.go b/slice/slice_test.go index da8d831..1530b60 100644 --- a/slice/slice_test.go +++ b/slice/slice_test.go @@ -1503,16 +1503,16 @@ func TestRightPaddingAndLeftPadding(t *testing.T) { assert.Equal([]int{0, 0, 0, 1, 2, 3, 4, 5, 0, 0, 0}, padded) } -func TestUniqueByParallel(t *testing.T) { +func TestUniqueByConcurrent(t *testing.T) { t.Parallel() - assert := internal.NewAssert(t, "TestUniqueByParallel") + assert := internal.NewAssert(t, "TestUniqueByConcurrent") nums := []int{1, 2, 3, 1, 2, 4, 5, 6, 4, 7} numOfThreads := 4 comparator := func(item int, other int) bool { return item == other } - result := UniqueByParallel(nums, numOfThreads, comparator) + result := UniqueByConcurrent(nums, numOfThreads, comparator) assert.Equal([]int{1, 2, 3, 4, 5, 6, 7}, result) }