feature: added RemoveIf and RemoveByIndex functions into array list
parent
a472faec29
commit
e89429a93c
|
@ -15,6 +15,24 @@ func (self *ArrayList[T]) Add(element T) {
|
|||
self.size++
|
||||
}
|
||||
|
||||
func (self *ArrayList[T]) RemoveIf(filter func(T) bool) {
|
||||
index := 0
|
||||
for {
|
||||
if index >= self.size {
|
||||
break
|
||||
}
|
||||
|
||||
element := self.content[index]
|
||||
shouldRemove := filter(element)
|
||||
|
||||
if shouldRemove {
|
||||
self.RemoveByIndex(index)
|
||||
} else {
|
||||
index++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (self *ArrayList[T]) Remove(element T) {
|
||||
indexFromMove := -1
|
||||
for index, value := range self.content {
|
||||
|
@ -25,11 +43,14 @@ func (self *ArrayList[T]) Remove(element T) {
|
|||
}
|
||||
}
|
||||
|
||||
self.RemoveByIndex(indexFromMove)
|
||||
}
|
||||
|
||||
func (self *ArrayList[T]) RemoveByIndex(index int) {
|
||||
contentSize := len(self.content)
|
||||
|
||||
if indexFromMove >= 0 {
|
||||
|
||||
for i := indexFromMove; i < contentSize; i++ {
|
||||
if index >= 0 {
|
||||
for i := index; i < contentSize; i++ {
|
||||
self.content[i-1] = self.content[i]
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue