mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-11 16:22:26 +08:00
feat: add ListToMap for list
This commit is contained in:
@@ -405,3 +405,14 @@ func (l *List[T]) batchRemove(list *List[T], complement bool) bool {
|
|||||||
func (l *List[T]) Iterator() iterator.Iterator[T] {
|
func (l *List[T]) Iterator() iterator.Iterator[T] {
|
||||||
return iterator.FromSlice(l.data)
|
return iterator.FromSlice(l.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ToMap convert a list to a map based on iteratee function.
|
||||||
|
func ListToMap[T any, K comparable, V any](list *List[T], iteratee func(T) (K, V)) map[K]V {
|
||||||
|
result := make(map[K]V, list.Size())
|
||||||
|
for _, item := range list.data {
|
||||||
|
k, v := iteratee(item)
|
||||||
|
result[k] = v
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|||||||
@@ -447,3 +447,16 @@ func TestIterator(t *testing.T) {
|
|||||||
|
|
||||||
assert.Equal([]int{1, 2, 3, 4}, rs)
|
assert.Equal([]int{1, 2, 3, 4}, rs)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestListToMap(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "ListToMap")
|
||||||
|
|
||||||
|
list := NewList([]int{1, 2, 3, 4})
|
||||||
|
|
||||||
|
result := ListToMap(list, func(n int) (int, bool) {
|
||||||
|
return n, n > 1
|
||||||
|
})
|
||||||
|
expected := map[int]bool{1: false, 2: true, 3: true, 4: true}
|
||||||
|
|
||||||
|
assert.Equal(expected, result)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user