From a68b00dfd4815ae741f70cc7f37aed073c128e01 Mon Sep 17 00:00:00 2001 From: James Strachan Date: Tue, 21 Feb 2012 11:11:43 +0000 Subject: [PATCH] renamed the rather long getOrElseUpdate to a simpler getOrPut which is a bit simpler and more accurate; as a new entry is put into the Map if its null --- stdlib/ktSrc/JavaIterables.kt | 2 +- stdlib/ktSrc/JavaUtil.kt | 5 +++-- stdlib/ktSrc/JavaUtilMap.kt | 2 +- testlib/test/MapTest.kt | 6 +++--- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/stdlib/ktSrc/JavaIterables.kt b/stdlib/ktSrc/JavaIterables.kt index 8815f7e929d..65c73948714 100644 --- a/stdlib/ktSrc/JavaIterables.kt +++ b/stdlib/ktSrc/JavaIterables.kt @@ -110,7 +110,7 @@ inline fun java.lang.Iterable.foldRight(initial: T, operation: (it: T, it inline fun java.lang.Iterable.groupBy(result: Map> = HashMap>(), toKey: (T)-> K) : Map> { for (elem in this) { val key = toKey(elem) - val list = result.getOrElseUpdate(key){ ArrayList() } + val list = result.getOrPut(key){ ArrayList() } list.add(elem) } return result diff --git a/stdlib/ktSrc/JavaUtil.kt b/stdlib/ktSrc/JavaUtil.kt index 502e87b9910..83a3f08d897 100644 --- a/stdlib/ktSrc/JavaUtil.kt +++ b/stdlib/ktSrc/JavaUtil.kt @@ -19,8 +19,9 @@ inline fun linkedList(vararg values: T) : LinkedList = values.to(LinkedLi /** Returns a new HashSet with a variable number of initial elements */ inline fun hashSet(vararg values: T) : HashSet = values.to(HashSet(values.size)) -/** Returns a new hash map */ -inline fun hashMap() = HashMap() +inline fun hashMap(): HashMap = HashMap() + +inline fun sortedMap(): SortedMap = TreeMap() val Collection<*>.indices : IntRange diff --git a/stdlib/ktSrc/JavaUtilMap.kt b/stdlib/ktSrc/JavaUtilMap.kt index d51e02193b8..7c02d1f65cc 100644 --- a/stdlib/ktSrc/JavaUtilMap.kt +++ b/stdlib/ktSrc/JavaUtilMap.kt @@ -41,7 +41,7 @@ inline fun java.util.Map.getOrElse(key: K, defaultValue: ()-> V) : V } /** Returns the value for the given key or the result of the defaultValue function is put into the map for the given value and returned */ -inline fun java.util.Map.getOrElseUpdate(key: K, defaultValue: ()-> V) : V { +inline fun java.util.Map.getOrPut(key: K, defaultValue: ()-> V) : V { val current = this.get(key) if (current != null) { return current diff --git a/testlib/test/MapTest.kt b/testlib/test/MapTest.kt index 035e9e01269..8550e457c84 100644 --- a/testlib/test/MapTest.kt +++ b/testlib/test/MapTest.kt @@ -21,11 +21,11 @@ class MapTest() : TestSupport() { assertEquals(0, data.size) } - fun testGetOrElseUpdate() { - val a = data.getOrElseUpdate("foo"){2} + fun testGetOrPut() { + val a = data.getOrPut("foo"){2} assertEquals(2, a) - val b = data.getOrElseUpdate("foo"){3} + val b = data.getOrPut("foo"){3} assertEquals(2, b) assertEquals(1, data.size())