stdlib: Remove all occurrences in Collection.removeAll method
This commit is contained in:
@@ -132,9 +132,12 @@ class ArrayList<E> private constructor(
|
|||||||
|
|
||||||
override fun removeAll(elements: Collection<E>): Boolean {
|
override fun removeAll(elements: Collection<E>): Boolean {
|
||||||
var changed = false
|
var changed = false
|
||||||
val it = elements.iterator()
|
val it = iterator()
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
if (remove(it.next())) changed = true
|
if (elements.contains(it.next())) {
|
||||||
|
it.remove()
|
||||||
|
changed = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return changed
|
return changed
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -422,11 +422,13 @@ class HashMap<K, V> private constructor(
|
|||||||
|
|
||||||
internal fun removeAllEntries(elements: Collection<Map.Entry<K, V>>): Boolean {
|
internal fun removeAllEntries(elements: Collection<Map.Entry<K, V>>): Boolean {
|
||||||
if (elements.isEmpty()) return false
|
if (elements.isEmpty()) return false
|
||||||
val it = elements.iterator()
|
val it = entriesIterator()
|
||||||
var updated = false
|
var updated = false
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
if (removeEntry(it.next()))
|
if (elements.contains(it.next())) {
|
||||||
|
it.remove()
|
||||||
updated = true
|
updated = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return updated
|
return updated
|
||||||
}
|
}
|
||||||
@@ -460,11 +462,13 @@ class HashMap<K, V> private constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal fun removeAllValues(elements: Collection<V>): Boolean {
|
internal fun removeAllValues(elements: Collection<V>): Boolean {
|
||||||
val it = elements.iterator()
|
val it = valuesIterator()
|
||||||
var updated = false
|
var updated = false
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
if (removeValue(it.next()))
|
if (elements.contains(it.next())) {
|
||||||
|
it.remove()
|
||||||
updated = true
|
updated = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return updated
|
return updated
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,11 +56,13 @@ class HashSet<K> internal constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun removeAll(elements: Collection<K>): Boolean {
|
override fun removeAll(elements: Collection<K>): Boolean {
|
||||||
val it = elements.iterator()
|
val it = iterator()
|
||||||
var updated = false
|
var updated = false
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
if (remove(it.next()))
|
if (elements.contains(it.next())) {
|
||||||
|
it.remove()
|
||||||
updated = true
|
updated = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return updated
|
return updated
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user