StdLib: Rename method parameters (Maps)

This commit is contained in:
Ilya Gorbunov
2015-11-19 22:40:13 +03:00
parent a3cd86d2cd
commit bbe6a3c7ca
3 changed files with 64 additions and 118 deletions
@@ -20,30 +20,30 @@ public fun <K, V> Map<K, V>.getOrImplicitDefault(key: K): V {
}
/**
* Returns a wrapper of this read-only map, having the implicit default value provided with the specified function [default].
* Returns a wrapper of this read-only map, having the implicit default value provided with the specified function [defaultValue].
* This implicit default value is used when [getOrImplicitDefault] is called on the returned map,
* and that map doesn't contain value for the key specified.
*
* When this map already have an implicit default value provided with a former call to [withDefault], it is being replaced by this call.
*/
public fun <K, V> Map<K, V>.withDefault(default: (key: K) -> V): Map<K, V> =
public fun <K, V> Map<K, V>.withDefault(defaultValue: (key: K) -> V): Map<K, V> =
when (this) {
is MapWithDefault -> this.map.withDefault(default)
else -> MapWithDefaultImpl(this, default)
is MapWithDefault -> this.map.withDefault(defaultValue)
else -> MapWithDefaultImpl(this, defaultValue)
}
/**
* Returns a wrapper of this mutable map, having the implicit default value provided with the specified function [default].
* Returns a wrapper of this mutable map, having the implicit default value provided with the specified function [defaultValue].
* This implicit default value is used when [getOrImplicitDefault] is called on the returned map,
* and that map doesn't contain value for the key specified.
*
* When this map already have an implicit default value provided with a former call to [withDefault], it is being replaced by this call.
*/
@kotlin.jvm.JvmName("withDefaultMutable")
public fun <K, V> MutableMap<K, V>.withDefault(default: (key: K) -> V): MutableMap<K, V> =
public fun <K, V> MutableMap<K, V>.withDefault(defaultValue: (key: K) -> V): MutableMap<K, V> =
when (this) {
is MutableMapWithDefault -> this.map.withDefault(default)
else -> MutableMapWithDefaultImpl(this, default)
is MutableMapWithDefault -> this.map.withDefault(defaultValue)
else -> MutableMapWithDefaultImpl(this, defaultValue)
}
+50 -87
View File
@@ -34,7 +34,7 @@ public fun <K, V> emptyMap(): Map<K, V> = EmptyMap as Map<K, V>
*
* The returned map is serializable (JVM).
*/
public fun <K, V> mapOf(vararg values: Pair<K, V>): Map<K, V> = if (values.size > 0) linkedMapOf(*values) else emptyMap()
public fun <K, V> mapOf(vararg pairs: Pair<K, V>): Map<K, V> = if (pairs.size > 0) linkedMapOf(*pairs) else emptyMap()
/** Returns an empty read-only map. The returned map is serializable (JVM). */
public fun <K, V> mapOf(): Map<K, V> = emptyMap()
@@ -44,7 +44,7 @@ public fun <K, V> mapOf(): Map<K, V> = emptyMap()
* specified value. The returned map is serializable.
*/
@JvmVersion
public fun <K, V> mapOf(keyValuePair: Pair<K, V>): Map<K, V> = Collections.singletonMap(keyValuePair.first, keyValuePair.second)
public fun <K, V> mapOf(pair: Pair<K, V>): Map<K, V> = Collections.singletonMap(pair.first, pair.second)
/**
* Returns a new [HashMap] with the specified contents, given as a list of pairs
@@ -52,11 +52,9 @@ public fun <K, V> mapOf(keyValuePair: Pair<K, V>): Map<K, V> = Collections.singl
*
* @sample test.collections.MapTest.createUsingPairs
*/
public fun <K, V> hashMapOf(vararg values: Pair<K, V>): HashMap<K, V> {
val answer = HashMap<K, V>(mapCapacity(values.size))
answer.putAll(*values)
return answer
}
public fun <K, V> hashMapOf(vararg pairs: Pair<K, V>): HashMap<K, V>
= HashMap<K, V>(mapCapacity(pairs.size)).apply { putAll(pairs) }
/**
* Returns a new [LinkedHashMap] with the specified contents, given as a list of pairs
@@ -65,11 +63,8 @@ public fun <K, V> hashMapOf(vararg values: Pair<K, V>): HashMap<K, V> {
*
* @sample test.collections.MapTest.createLinkedMap
*/
public fun <K, V> linkedMapOf(vararg values: Pair<K, V>): LinkedHashMap<K, V> {
val answer = LinkedHashMap<K, V>(mapCapacity(values.size))
answer.putAll(*values)
return answer
}
public fun <K, V> linkedMapOf(vararg pairs: Pair<K, V>): LinkedHashMap<K, V>
= LinkedHashMap<K, V>(mapCapacity(pairs.size)).apply { putAll(pairs) }
/**
* Calculate the initial capacity of a map, based on Guava's com.google.common.collect.Maps approach. This is equivalent
@@ -220,10 +215,19 @@ public inline fun <K, V, R, C : MutableMap<R, V>> Map<K, V>.mapKeysTo(destinatio
}
/**
* Puts all the given [values] into this [MutableMap] with the first component in the pair being the key and the second the value.
* Puts all the given [pairs] into this [MutableMap] with the first component in the pair being the key and the second the value.
*/
public fun <K, V> MutableMap<K, V>.putAll(vararg values: Pair<K, V>): Unit {
for ((key, value) in values) {
@kotlin.jvm.JvmName("putAllVararg")
@Deprecated("Use an overload without vararg", ReplaceWith("putAll(pairs)"))
public fun <K, V> MutableMap<K, V>.putAll(vararg pairs: Pair<K, V>): Unit {
putAll(pairs)
}
/**
* Puts all the given [pairs] into this [MutableMap] with the first component in the pair being the key and the second the value.
*/
public fun <K, V> MutableMap<K, V>.putAll(pairs: Array<out Pair<K, V>>): Unit {
for ((key, value) in pairs) {
put(key, value)
}
}
@@ -231,8 +235,8 @@ public fun <K, V> MutableMap<K, V>.putAll(vararg values: Pair<K, V>): Unit {
/**
* Puts all the elements of the given collection into this [MutableMap] with the first component in the pair being the key and the second the value.
*/
public fun <K, V> MutableMap<K, V>.putAll(values: Iterable<Pair<K,V>>): Unit {
for ((key, value) in values) {
public fun <K, V> MutableMap<K, V>.putAll(pairs: Iterable<Pair<K,V>>): Unit {
for ((key, value) in pairs) {
put(key, value)
}
}
@@ -240,8 +244,8 @@ public fun <K, V> MutableMap<K, V>.putAll(values: Iterable<Pair<K,V>>): Unit {
/**
* Puts all the elements of the given sequence into this [MutableMap] with the first component in the pair being the key and the second the value.
*/
public fun <K, V> MutableMap<K, V>.putAll(values: Sequence<Pair<K,V>>): Unit {
for ((key, value) in values) {
public fun <K, V> MutableMap<K, V>.putAll(pairs: Sequence<Pair<K,V>>): Unit {
for ((key, value) in pairs) {
put(key, value)
}
}
@@ -338,36 +342,21 @@ public inline fun <K, V> Map<K, V>.filterNot(predicate: (Map.Entry<K, V>) -> Boo
/**
* Returns a new map containing all key-value pairs from the given collection of pairs.
*/
public fun <K, V> Iterable<Pair<K, V>>.toMap(): Map<K, V> {
val result = LinkedHashMap<K, V>(collectionSizeOrNull()?.let { mapCapacity(it) } ?: 16)
for (element in this) {
result.put(element.first, element.second)
}
return result
}
public fun <K, V> Iterable<Pair<K, V>>.toMap(): Map<K, V>
= LinkedHashMap<K, V>(collectionSizeOrNull()?.let { mapCapacity(it) } ?: 16).apply { putAll(this@toMap) }
/**
* Returns a new map containing all key-value pairs from the given array of pairs.
*/
public fun <K, V> Array<Pair<K, V>>.toMap(): Map<K, V> {
val result = LinkedHashMap<K, V>(mapCapacity(size))
for (element in this) {
result.put(element.first, element.second)
}
return result
}
public fun <K, V> Array<out Pair<K, V>>.toMap(): Map<K, V>
= LinkedHashMap<K, V>(mapCapacity(size)).apply { putAll(this@toMap) }
/**
* Returns a new map containing all key-value pairs from the given sequence of pairs.
*/
public fun <K, V> Sequence<Pair<K, V>>.toMap(): Map<K, V> {
val result = LinkedHashMap<K, V>()
for (element in this) {
result.put(element.first, element.second)
}
return result
}
public fun <K, V> Sequence<Pair<K, V>>.toMap(): Map<K, V>
= LinkedHashMap<K, V>().apply { putAll(this@toMap) }
/**
* Converts this [Map] to a [LinkedHashMap], maintaining the insertion order of elements added to that map afterwards.
@@ -377,47 +366,33 @@ public fun <K, V> Map<K, V>.toLinkedMap(): MutableMap<K, V> = LinkedHashMap(this
/**
* Creates a new read-only map by replacing or adding an entry to this map from a given key-value [pair].
*/
public operator fun <K, V> Map<K, V>.plus(pair: Pair<K, V>): Map<K, V> {
val newMap = this.toLinkedMap()
newMap.put(pair.first, pair.second)
return newMap
}
public operator fun <K, V> Map<K, V>.plus(pair: Pair<K, V>): Map<K, V>
= this.toLinkedMap().apply { put(pair.first, pair.second) }
/**
* Creates a new read-only map by replacing or adding entries to this map from a given collection of key-value [pairs].
*/
public operator fun <K, V> Map<K, V>.plus(pairs: Iterable<Pair<K, V>>): Map<K, V> {
val newMap = this.toLinkedMap()
newMap.putAll(pairs)
return newMap
}
public operator fun <K, V> Map<K, V>.plus(pairs: Iterable<Pair<K, V>>): Map<K, V>
= this.toLinkedMap().apply { putAll(pairs) }
/**
* Creates a new read-only map by replacing or adding entries to this map from a given array of key-value [pairs].
*/
public operator fun <K, V> Map<K, V>.plus(pairs: Array<Pair<K, V>>): Map<K, V> {
val newMap = this.toLinkedMap()
newMap.putAll(*pairs)
return newMap
}
public operator fun <K, V> Map<K, V>.plus(pairs: Array<out Pair<K, V>>): Map<K, V>
= this.toLinkedMap().apply { putAll(pairs) }
/**
* Creates a new read-only map by replacing or adding entries to this map from a given sequence of key-value [pairs].
*/
public operator fun <K, V> Map<K, V>.plus(pairs: Sequence<Pair<K, V>>): Map<K, V> {
val newMap = this.toLinkedMap()
newMap.putAll(pairs)
return newMap
}
public operator fun <K, V> Map<K, V>.plus(pairs: Sequence<Pair<K, V>>): Map<K, V>
= this.toLinkedMap().apply { putAll(pairs) }
/**
* Creates a new read-only map by replacing or adding entries to this map from another [map].
*/
public operator fun <K, V> Map<K, V>.plus(map: Map<K, V>): Map<K, V> {
val newMap = this.toLinkedMap()
newMap.putAll(map)
return newMap
}
public operator fun <K, V> Map<K, V>.plus(map: Map<K, V>): Map<K, V>
= this.toLinkedMap().apply { putAll(map) }
/**
* Appends or replaces the given [pair] in this mutable map.
@@ -436,8 +411,8 @@ public operator fun <K, V> MutableMap<K, V>.plusAssign(pairs: Iterable<Pair<K, V
/**
* Appends or replaces all pairs from the given array of [pairs] in this mutable map.
*/
public operator fun <K, V> MutableMap<K, V>.plusAssign(pairs: Array<Pair<K, V>>) {
putAll(*pairs)
public operator fun <K, V> MutableMap<K, V>.plusAssign(pairs: Array<out Pair<K, V>>) {
putAll(pairs)
}
/**
@@ -457,38 +432,26 @@ public operator fun <K, V> MutableMap<K, V>.plusAssign(map: Map<K, V>) {
/**
* Creates a new read-only map by removing a [key] from this map.
*/
public operator fun <K, V> Map<K, V>.minus(key: K): Map<K, V> {
val result = LinkedHashMap<K, V>(this)
result.minusAssign(key)
return result
}
public operator fun <K, V> Map<K, V>.minus(key: K): Map<K, V>
= this.toLinkedMap().apply { minusAssign(key) }
/**
* Creates a new read-only map by removing a collection of [keys] from this map.
*/
public operator fun <K, V> Map<K, V>.minus(keys: Iterable<K>): Map<K, V> {
val result = LinkedHashMap<K, V>(this)
result.minusAssign(keys)
return result
}
public operator fun <K, V> Map<K, V>.minus(keys: Iterable<K>): Map<K, V>
= this.toLinkedMap().apply { minusAssign(keys) }
/**
* Creates a new read-only map by removing a array of [keys] from this map.
*/
public operator fun <K, V> Map<K, V>.minus(keys: Array<K>): Map<K, V> {
val result = LinkedHashMap<K, V>(this)
result.minusAssign(keys)
return result
}
public operator fun <K, V> Map<K, V>.minus(keys: Array<K>): Map<K, V>
= this.toLinkedMap().apply { minusAssign(keys) }
/**
* Creates a new read-only map by removing a sequence of [keys] from this map.
*/
public operator fun <K, V> Map<K, V>.minus(keys: Sequence<K>): Map<K, V> {
val result = LinkedHashMap<K, V>(this)
result.minusAssign(keys)
return result
}
public operator fun <K, V> Map<K, V>.minus(keys: Sequence<K>): Map<K, V>
= this.toLinkedMap().apply { minusAssign(keys) }
/**
* Removes the given [key] from this mutable map.
@@ -59,11 +59,8 @@ public fun <K : Comparable<K>, V> Map<K, V>.toSortedMap(): SortedMap<K, V> = Tre
*
* @sample test.collections.MapJVMTest.toSortedMapWithComparator
*/
public fun <K, V> Map<K, V>.toSortedMap(comparator: Comparator<in K>): SortedMap<K, V> {
val result = TreeMap<K, V>(comparator)
result.putAll(this)
return result
}
public fun <K, V> Map<K, V>.toSortedMap(comparator: Comparator<in K>): SortedMap<K, V>
= TreeMap<K, V>(comparator).apply { putAll(this@toSortedMap) }
/**
* Returns a new [SortedMap] with the specified contents, given as a list of pairs
@@ -71,17 +68,8 @@ public fun <K, V> Map<K, V>.toSortedMap(comparator: Comparator<in K>): SortedMap
*
* @sample test.collections.MapJVMTest.createSortedMap
*/
public fun <K, V> sortedMapOf(vararg values: Pair<K, V>): SortedMap<K, V> {
val answer = TreeMap<K, V>()
/**
TODO replace by this simpler call when we can pass vararg values into other methods
answer.putAll(values)
*/
for (v in values) {
answer.put(v.first, v.second)
}
return answer
}
public fun <K, V> sortedMapOf(vararg pairs: Pair<K, V>): SortedMap<K, V>
= TreeMap<K, V>().apply { putAll(pairs) }
/**
@@ -89,11 +77,6 @@ public fun <K, V> sortedMapOf(vararg values: Pair<K, V>): SortedMap<K, V> {
*
* @sample test.collections.MapJVMTest.toProperties
*/
public fun Map<String, String>.toProperties(): Properties {
val answer = Properties()
for (e in this) {
answer.put(e.key, e.value)
}
return answer
}
public fun Map<String, String>.toProperties(): Properties
= Properties().apply { putAll(this@toProperties) }