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 {
|
||||
var changed = false
|
||||
val it = elements.iterator()
|
||||
val it = iterator()
|
||||
while (it.hasNext()) {
|
||||
if (remove(it.next())) changed = true
|
||||
if (elements.contains(it.next())) {
|
||||
it.remove()
|
||||
changed = true
|
||||
}
|
||||
}
|
||||
return changed
|
||||
}
|
||||
|
||||
@@ -422,11 +422,13 @@ class HashMap<K, V> private constructor(
|
||||
|
||||
internal fun removeAllEntries(elements: Collection<Map.Entry<K, V>>): Boolean {
|
||||
if (elements.isEmpty()) return false
|
||||
val it = elements.iterator()
|
||||
val it = entriesIterator()
|
||||
var updated = false
|
||||
while (it.hasNext()) {
|
||||
if (removeEntry(it.next()))
|
||||
if (elements.contains(it.next())) {
|
||||
it.remove()
|
||||
updated = true
|
||||
}
|
||||
}
|
||||
return updated
|
||||
}
|
||||
@@ -460,11 +462,13 @@ class HashMap<K, V> private constructor(
|
||||
}
|
||||
|
||||
internal fun removeAllValues(elements: Collection<V>): Boolean {
|
||||
val it = elements.iterator()
|
||||
val it = valuesIterator()
|
||||
var updated = false
|
||||
while (it.hasNext()) {
|
||||
if (removeValue(it.next()))
|
||||
if (elements.contains(it.next())) {
|
||||
it.remove()
|
||||
updated = true
|
||||
}
|
||||
}
|
||||
return updated
|
||||
}
|
||||
|
||||
@@ -56,11 +56,13 @@ class HashSet<K> internal constructor(
|
||||
}
|
||||
|
||||
override fun removeAll(elements: Collection<K>): Boolean {
|
||||
val it = elements.iterator()
|
||||
val it = iterator()
|
||||
var updated = false
|
||||
while (it.hasNext()) {
|
||||
if (remove(it.next()))
|
||||
if (elements.contains(it.next())) {
|
||||
it.remove()
|
||||
updated = true
|
||||
}
|
||||
}
|
||||
return updated
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user