mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-15 02:02:27 +08:00
list: add LastIndexOf (#46)
Add LastIndexOf method too List and fix doc LastIndexOf returns the index of the last occurrence of the value in this list. if not found return -1
This commit is contained in:
@@ -31,7 +31,7 @@ func (l *List[T]) ValueOf(index int) (*T, bool) {
|
|||||||
return &l.data[index], true
|
return &l.data[index], true
|
||||||
}
|
}
|
||||||
|
|
||||||
// IndexOf reture the index of value. if not found return -1
|
// IndexOf returns the index of value. if not found return -1
|
||||||
func (l *List[T]) IndexOf(value T) int {
|
func (l *List[T]) IndexOf(value T) int {
|
||||||
index := -1
|
index := -1
|
||||||
data := l.data
|
data := l.data
|
||||||
@@ -44,6 +44,20 @@ func (l *List[T]) IndexOf(value T) int {
|
|||||||
return index
|
return index
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LastIndexOf returns the index of the last occurrence of the value in this list.
|
||||||
|
// if not found return -1
|
||||||
|
func (l *List[T]) LastIndexOf(value T) int {
|
||||||
|
index := -1
|
||||||
|
data := l.data
|
||||||
|
for i := len(data) - 1; i >= 0; i-- {
|
||||||
|
if reflect.DeepEqual(data[i], value) {
|
||||||
|
index = i
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return index
|
||||||
|
}
|
||||||
|
|
||||||
// Contain checks if the value in the list or not
|
// Contain checks if the value in the list or not
|
||||||
func (l *List[T]) Contain(value T) bool {
|
func (l *List[T]) Contain(value T) bool {
|
||||||
data := l.data
|
data := l.data
|
||||||
|
|||||||
@@ -36,6 +36,23 @@ func TestIndexOf(t *testing.T) {
|
|||||||
assert.Equal(-1, i)
|
assert.Equal(-1, i)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLastIndexOf(t *testing.T) {
|
||||||
|
assert := internal.NewAssert(t, "TestIndexOf")
|
||||||
|
|
||||||
|
list := NewList([]int{1, 2, 3, 3, 3, 3, 4, 5, 6, 9})
|
||||||
|
i := list.LastIndexOf(3)
|
||||||
|
assert.Equal(5, i)
|
||||||
|
|
||||||
|
i = list.LastIndexOf(10)
|
||||||
|
assert.Equal(-1, i)
|
||||||
|
|
||||||
|
i = list.LastIndexOf(4)
|
||||||
|
assert.Equal(6, i)
|
||||||
|
|
||||||
|
i = list.LastIndexOf(1)
|
||||||
|
assert.Equal(0, i)
|
||||||
|
}
|
||||||
|
|
||||||
func TestContain(t *testing.T) {
|
func TestContain(t *testing.T) {
|
||||||
assert := internal.NewAssert(t, "TestContain")
|
assert := internal.NewAssert(t, "TestContain")
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import (
|
|||||||
- [Data](#Data)
|
- [Data](#Data)
|
||||||
- [ValueOf](#ValueOf)
|
- [ValueOf](#ValueOf)
|
||||||
- [IndexOf](#IndexOf)
|
- [IndexOf](#IndexOf)
|
||||||
|
- [LastIndexOf](#LastIndexOf)
|
||||||
- [Push](#Push)
|
- [Push](#Push)
|
||||||
- [PopFirst](#PopFirst)
|
- [PopFirst](#PopFirst)
|
||||||
- [PopLast](#PopLast)
|
- [PopLast](#PopLast)
|
||||||
@@ -167,7 +168,7 @@ func main() {
|
|||||||
|
|
||||||
|
|
||||||
### <span id="IndexOf">IndexOf</span>
|
### <span id="IndexOf">IndexOf</span>
|
||||||
<p>Reture the index of value in the list. if not found return -1</p>
|
<p>Returns the index of value in the list. if not found return -1</p>
|
||||||
|
|
||||||
<b>Signature:</b>
|
<b>Signature:</b>
|
||||||
|
|
||||||
@@ -192,6 +193,32 @@ func main() {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### <span id="LastIndexOf">LastIndexOf</span>
|
||||||
|
<p> Returns the index of the last occurrence of the value in this list if not found return -1</p>
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func (l *List[T]) LastIndexOf(value T) int
|
||||||
|
```
|
||||||
|
<b>Example:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
list "github.com/duke-git/lancet/v2/datastructure/list"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
li := list.NewList([]int{1, 2, 3, 1})
|
||||||
|
|
||||||
|
fmt.Println(li.LastIndexOf(1)) // 3
|
||||||
|
fmt.Println(li.LastIndexOf(0)) //-1
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### <span id="Push">Push</span>
|
### <span id="Push">Push</span>
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import (
|
|||||||
- [Merge](#Merge)
|
- [Merge](#Merge)
|
||||||
- [Minus](#Minus)
|
- [Minus](#Minus)
|
||||||
- [Values](#Values)
|
- [Values](#Values)
|
||||||
- [Values](#Values)
|
- [IsDisjoint](#IsDisjoint)
|
||||||
|
|
||||||
<div STYLE="page-break-after: always;"></div>
|
<div STYLE="page-break-after: always;"></div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user