Add groupingBy and eachCount sample.
This commit is contained in:
@@ -7635,6 +7635,8 @@ public inline fun <K, V, M : MutableMap<in K, MutableList<V>>> CharArray.groupBy
|
||||
/**
|
||||
* Creates a [Grouping] source from an array to be used later with one of group-and-fold operations
|
||||
* using the specified [keySelector] function to extract a key from each element.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
public inline fun <T, K> Array<out T>.groupingBy(crossinline keySelector: (T) -> K): Grouping<T, K> {
|
||||
|
||||
@@ -1183,6 +1183,8 @@ public inline fun <T, K, V, M : MutableMap<in K, MutableList<V>>> Iterable<T>.gr
|
||||
/**
|
||||
* Creates a [Grouping] source from a collection to be used later with one of group-and-fold operations
|
||||
* using the specified [keySelector] function to extract a key from each element.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
public inline fun <T, K> Iterable<T>.groupingBy(crossinline keySelector: (T) -> K): Grouping<T, K> {
|
||||
|
||||
@@ -648,6 +648,8 @@ public inline fun <T, K, V, M : MutableMap<in K, MutableList<V>>> Sequence<T>.gr
|
||||
/**
|
||||
* Creates a [Grouping] source from a sequence to be used later with one of group-and-fold operations
|
||||
* using the specified [keySelector] function to extract a key from each element.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
public inline fun <T, K> Sequence<T>.groupingBy(crossinline keySelector: (T) -> K): Grouping<T, K> {
|
||||
|
||||
@@ -705,6 +705,8 @@ public inline fun <K, V, M : MutableMap<in K, MutableList<V>>> CharSequence.grou
|
||||
/**
|
||||
* Creates a [Grouping] source from a char sequence to be used later with one of group-and-fold operations
|
||||
* using the specified [keySelector] function to extract a key from each character.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
public inline fun <K> CharSequence.groupingBy(crossinline keySelector: (Char) -> K): Grouping<Char, K> {
|
||||
|
||||
@@ -4448,6 +4448,8 @@ public header inline fun <K, V, M : MutableMap<in K, MutableList<V>>> CharArray.
|
||||
/**
|
||||
* Creates a [Grouping] source from an array to be used later with one of group-and-fold operations
|
||||
* using the specified [keySelector] function to extract a key from each element.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
public header inline fun <T, K> Array<out T>.groupingBy(crossinline keySelector: (T) -> K): Grouping<T, K>
|
||||
|
||||
@@ -590,6 +590,8 @@ public header inline fun <T, K, V, M : MutableMap<in K, MutableList<V>>> Iterabl
|
||||
/**
|
||||
* Creates a [Grouping] source from a collection to be used later with one of group-and-fold operations
|
||||
* using the specified [keySelector] function to extract a key from each element.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
public header inline fun <T, K> Iterable<T>.groupingBy(crossinline keySelector: (T) -> K): Grouping<T, K>
|
||||
|
||||
@@ -362,6 +362,8 @@ public header inline fun <T, K, V, M : MutableMap<in K, MutableList<V>>> Sequenc
|
||||
/**
|
||||
* Creates a [Grouping] source from a sequence to be used later with one of group-and-fold operations
|
||||
* using the specified [keySelector] function to extract a key from each element.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
public header inline fun <T, K> Sequence<T>.groupingBy(crossinline keySelector: (T) -> K): Grouping<T, K>
|
||||
|
||||
@@ -425,6 +425,8 @@ public header inline fun <K, V, M : MutableMap<in K, MutableList<V>>> CharSequen
|
||||
/**
|
||||
* Creates a [Grouping] source from a char sequence to be used later with one of group-and-fold operations
|
||||
* using the specified [keySelector] function to extract a key from each character.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
public header inline fun <K> CharSequence.groupingBy(crossinline keySelector: (Char) -> K): Grouping<Char, K>
|
||||
|
||||
@@ -59,6 +59,18 @@ class Collections {
|
||||
// same content as in namesByTeam map, but the map is mutable
|
||||
assertTrue(mutableNamesByTeam == namesByTeam)
|
||||
}
|
||||
|
||||
@Sample
|
||||
fun groupingByEachCount() {
|
||||
val words = "one two three four five six seven eight nine ten".split(' ')
|
||||
val frequenciesByFirstChar = words.groupingBy { it.first() }.eachCount()
|
||||
println("Counting first letters:")
|
||||
assertPrints(frequenciesByFirstChar, "{o=1, t=3, f=2, s=2, e=1, n=1}")
|
||||
|
||||
val moreWords = "eleven twelve".split(' ')
|
||||
val moreFrequencies = moreWords.groupingBy { it.first() }.eachCountTo(frequenciesByFirstChar.toMutableMap())
|
||||
assertPrints(moreFrequencies, "{o=1, t=4, f=2, s=2, e=2, n=1}")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7716,6 +7716,8 @@ public inline fun <K, V, M : MutableMap<in K, MutableList<V>>> CharArray.groupBy
|
||||
/**
|
||||
* Creates a [Grouping] source from an array to be used later with one of group-and-fold operations
|
||||
* using the specified [keySelector] function to extract a key from each element.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
public inline fun <T, K> Array<out T>.groupingBy(crossinline keySelector: (T) -> K): Grouping<T, K> {
|
||||
|
||||
@@ -1193,6 +1193,8 @@ public inline fun <T, K, V, M : MutableMap<in K, MutableList<V>>> Iterable<T>.gr
|
||||
/**
|
||||
* Creates a [Grouping] source from a collection to be used later with one of group-and-fold operations
|
||||
* using the specified [keySelector] function to extract a key from each element.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
public inline fun <T, K> Iterable<T>.groupingBy(crossinline keySelector: (T) -> K): Grouping<T, K> {
|
||||
|
||||
@@ -666,6 +666,8 @@ public inline fun <T, K, V, M : MutableMap<in K, MutableList<V>>> Sequence<T>.gr
|
||||
/**
|
||||
* Creates a [Grouping] source from a sequence to be used later with one of group-and-fold operations
|
||||
* using the specified [keySelector] function to extract a key from each element.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
public inline fun <T, K> Sequence<T>.groupingBy(crossinline keySelector: (T) -> K): Grouping<T, K> {
|
||||
|
||||
@@ -713,6 +713,8 @@ public inline fun <K, V, M : MutableMap<in K, MutableList<V>>> CharSequence.grou
|
||||
/**
|
||||
* Creates a [Grouping] source from a char sequence to be used later with one of group-and-fold operations
|
||||
* using the specified [keySelector] function to extract a key from each character.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
public inline fun <K> CharSequence.groupingBy(crossinline keySelector: (Char) -> K): Grouping<Char, K> {
|
||||
|
||||
@@ -224,6 +224,8 @@ public inline fun <S, T : S, K, M : MutableMap<in K, S>> Grouping<T, K>.reduceTo
|
||||
* Groups elements from the [Grouping] source by key and counts elements in each group.
|
||||
*
|
||||
* @return a [Map] associating the key of each group with the count of elements in the group.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
@JvmVersion
|
||||
@@ -241,6 +243,8 @@ public fun <T, K> Grouping<T, K>.eachCount(): Map<K, Int> =
|
||||
* that value is used as an initial value of the counter for that group.
|
||||
*
|
||||
* @return the [destination] map associating the key of each group with the count of elements in the group.
|
||||
*
|
||||
* @sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
*/
|
||||
@SinceKotlin("1.1")
|
||||
public fun <T, K, M : MutableMap<in K, Int>> Grouping<T, K>.eachCountTo(destination: M): M =
|
||||
|
||||
@@ -402,6 +402,8 @@ fun mapping(): List<GenericFunction> {
|
||||
"""
|
||||
Creates a [Grouping] source from ${f.collection.prefixWithArticle()} to be used later with one of group-and-fold operations
|
||||
using the specified [keySelector] function to extract a key from each ${f.element}.
|
||||
|
||||
@sample samples.collections.Collections.Transformations.groupingByEachCount
|
||||
"""
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user