Create SortedMap with Comparator and items
KT-34142
This commit is contained in:
committed by
Ilya Gorbunov
parent
e3fb74b656
commit
c023a02884
@@ -113,6 +113,18 @@ public fun <K, V> Map<out K, V>.toSortedMap(comparator: Comparator<in K>): Sorte
|
|||||||
public fun <K : Comparable<K>, V> sortedMapOf(vararg pairs: Pair<K, V>): SortedMap<K, V> =
|
public fun <K : Comparable<K>, V> sortedMapOf(vararg pairs: Pair<K, V>): SortedMap<K, V> =
|
||||||
TreeMap<K, V>().apply { putAll(pairs) }
|
TreeMap<K, V>().apply { putAll(pairs) }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new [SortedMap] with the specified contents, given as a list of pairs
|
||||||
|
* where the first value is the key and the second is the value.
|
||||||
|
*
|
||||||
|
* The resulting [SortedMap] determines the equality and order of keys according to the sorting order provided by the given [comparator].
|
||||||
|
*
|
||||||
|
* @sample samples.collections.Maps.Instantiation.sortedMapWithComparatorFromPairs
|
||||||
|
*/
|
||||||
|
@SinceKotlin("1.4")
|
||||||
|
public fun <K, V> sortedMapOf(comparator: Comparator<in K>, vararg pairs: Pair<K, V>): SortedMap<K, V> =
|
||||||
|
TreeMap<K, V>(comparator).apply { putAll(pairs) }
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts this [Map] to a [Properties] object.
|
* Converts this [Map] to a [Properties] object.
|
||||||
|
|||||||
@@ -18,6 +18,15 @@ class MapJVMTest {
|
|||||||
assertEquals(listOf("a", "b", "c"), map.keys.toList())
|
assertEquals(listOf("a", "b", "c"), map.keys.toList())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test fun createSortedMapWithComparator() {
|
||||||
|
val map = sortedMapOf(compareBy<String> { it.length }.thenBy { it }, Pair("c", 3), Pair("bc", 2), Pair("bd", 4), Pair("abc", 1))
|
||||||
|
assertEquals(1, map["abc"])
|
||||||
|
assertEquals(2, map["bc"])
|
||||||
|
assertEquals(3, map["c"])
|
||||||
|
assertEquals(4, map["bd"])
|
||||||
|
assertEquals(listOf("c", "bc", "bd", "abc"), map.keys.toList())
|
||||||
|
}
|
||||||
|
|
||||||
@Test fun toSortedMap() {
|
@Test fun toSortedMap() {
|
||||||
val map = mapOf(Pair("c", 3), Pair("b", 2), Pair("a", 1))
|
val map = mapOf(Pair("c", 3), Pair("b", 2), Pair("a", 1))
|
||||||
val sorted = map.toSortedMap()
|
val sorted = map.toSortedMap()
|
||||||
|
|||||||
@@ -43,6 +43,13 @@ class Maps {
|
|||||||
assertPrints(map.values, "[2, 3, 1]")
|
assertPrints(map.values, "[2, 3, 1]")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Sample
|
||||||
|
fun sortedMapWithComparatorFromPairs() {
|
||||||
|
val map = sortedMapOf(compareBy<String> { it.length }.thenBy { it }, Pair("abc", 1), Pair("c", 3), Pair("bd", 4), Pair("bc", 2))
|
||||||
|
assertPrints(map.keys, "[c, bc, bd, abc]")
|
||||||
|
assertPrints(map.values, "[3, 2, 4, 1]")
|
||||||
|
}
|
||||||
|
|
||||||
@Sample
|
@Sample
|
||||||
fun emptyReadOnlyMap() {
|
fun emptyReadOnlyMap() {
|
||||||
val map = emptyMap<String, Int>()
|
val map = emptyMap<String, Int>()
|
||||||
|
|||||||
+1
@@ -2445,6 +2445,7 @@ public final class kotlin/collections/MapsKt {
|
|||||||
public static final fun putAll (Ljava/util/Map;Ljava/lang/Iterable;)V
|
public static final fun putAll (Ljava/util/Map;Ljava/lang/Iterable;)V
|
||||||
public static final fun putAll (Ljava/util/Map;Lkotlin/sequences/Sequence;)V
|
public static final fun putAll (Ljava/util/Map;Lkotlin/sequences/Sequence;)V
|
||||||
public static final fun putAll (Ljava/util/Map;[Lkotlin/Pair;)V
|
public static final fun putAll (Ljava/util/Map;[Lkotlin/Pair;)V
|
||||||
|
public static final fun sortedMapOf (Ljava/util/Comparator;[Lkotlin/Pair;)Ljava/util/SortedMap;
|
||||||
public static final fun sortedMapOf ([Lkotlin/Pair;)Ljava/util/SortedMap;
|
public static final fun sortedMapOf ([Lkotlin/Pair;)Ljava/util/SortedMap;
|
||||||
public static final fun toList (Ljava/util/Map;)Ljava/util/List;
|
public static final fun toList (Ljava/util/Map;)Ljava/util/List;
|
||||||
public static final fun toMap (Ljava/lang/Iterable;)Ljava/util/Map;
|
public static final fun toMap (Ljava/lang/Iterable;)Ljava/util/Map;
|
||||||
|
|||||||
Reference in New Issue
Block a user