From f07b7cc58d0b795d9547c156eb25439d1bae621d Mon Sep 17 00:00:00 2001 From: Ilya Ryzhenkov Date: Mon, 17 Mar 2014 19:39:13 +0400 Subject: [PATCH] Functions on iterators are deprecated --- .../org/jetbrains/jet/utils/collections.kt | 42 +++++++++++++------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/core/util.runtime/src/org/jetbrains/jet/utils/collections.kt b/core/util.runtime/src/org/jetbrains/jet/utils/collections.kt index 516deff759e..001b34c465e 100644 --- a/core/util.runtime/src/org/jetbrains/jet/utils/collections.kt +++ b/core/util.runtime/src/org/jetbrains/jet/utils/collections.kt @@ -19,18 +19,7 @@ package org.jetbrains.jet.utils import java.util.LinkedHashMap import java.util.ArrayList -public fun Iterable.valuesToMap(key: (V) -> K): Map { - return iterator().valuesToMap(key) -} - -public fun Iterable.keysToMap(value: (K) -> V): Map { - return iterator().keysToMap(value) -} - -public fun Iterable.keysToMapExceptNulls(value: (K) -> V?): Map { - return iterator().keysToMapExceptNulls(value) -} - +[deprecated("use streams instead")] public fun Iterator.valuesToMap(key: (V) -> K): Map { val map = LinkedHashMap() for (v in this) { @@ -39,6 +28,7 @@ public fun Iterator.valuesToMap(key: (V) -> K): Map { return map } +[deprecated("use streams instead")] public fun Iterator.keysToMap(value: (K) -> V): Map { val map = LinkedHashMap() for (k in this) { @@ -47,6 +37,7 @@ public fun Iterator.keysToMap(value: (K) -> V): Map { return map } +[deprecated("use streams instead")] public fun Iterator.keysToMapExceptNulls(value: (K) -> V?): Map { val map = LinkedHashMap() for (k in this) { @@ -58,6 +49,33 @@ public fun Iterator.keysToMapExceptNulls(value: (K) -> V?): Map Iterable.valuesToMap(key: (V) -> K): Map { + val map = LinkedHashMap() + for (v in this) { + map[key(v)] = v + } + return map +} + +public fun Iterable.keysToMap(value: (K) -> V): Map { + val map = LinkedHashMap() + for (k in this) { + map[k] = value(k) + } + return map +} + +public fun Iterable.keysToMapExceptNulls(value: (K) -> V?): Map { + val map = LinkedHashMap() + for (k in this) { + val v = value(k) + if (v != null) { + map[k] = v + } + } + return map +} + public fun > C.ifEmpty(body: () -> C): C = if (isEmpty()) body() else this public fun Iterable>.flatten(): List {