From 5aa415c609d96d2661fd945dcd81e8b11e6a8ab3 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Fri, 20 Nov 2015 22:49:09 +0300 Subject: [PATCH] MutableMap.iterator() returns MutableIterator. --- libraries/stdlib/src/kotlin/collections/Maps.kt | 8 ++++++++ libraries/stdlib/test/collections/MapJVMTest.kt | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/libraries/stdlib/src/kotlin/collections/Maps.kt b/libraries/stdlib/src/kotlin/collections/Maps.kt index 2b0aaec4744..ef6aae7dafa 100644 --- a/libraries/stdlib/src/kotlin/collections/Maps.kt +++ b/libraries/stdlib/src/kotlin/collections/Maps.kt @@ -190,6 +190,14 @@ public inline fun MutableMap.getOrPut(key: K, defaultValue: () -> V */ public operator fun Map.iterator(): Iterator> = entries.iterator() +/** + * Returns a [MutableIterator] over the mutable entries in the [MutableMap]. + * + */ +@JvmVersion +@JvmName("mutableIterator") +public operator fun MutableMap.iterator(): MutableIterator> = entries.iterator() + /** * Populates the given `destination` [Map] with entries having the keys of this map and the values obtained * by applying the `transform` function to each entry in this [Map]. diff --git a/libraries/stdlib/test/collections/MapJVMTest.kt b/libraries/stdlib/test/collections/MapJVMTest.kt index 909a99e72b0..a531ec034bd 100644 --- a/libraries/stdlib/test/collections/MapJVMTest.kt +++ b/libraries/stdlib/test/collections/MapJVMTest.kt @@ -41,6 +41,17 @@ class MapJVMTest { assertEquals("B", prop.getProperty("b", "fail")) } + @test fun iterateAndRemove() { + val map = (1..5).toMap({ it }, { 'a' + it }).toLinkedMap() + val iterator = map.iterator() + while (iterator.hasNext()) { + if (iterator.next().key % 2 == 0) + iterator.remove() + } + assertEquals(listOf(1, 3, 5), map.keys.toList()) + assertEquals(listOf('b', 'd', 'f'), map.values.toList()) + } + @test fun getOrPutFailsOnConcurrentMap() { val map = ConcurrentHashMap()