각 요소에서 키를 추출하기 위해 지정된 keySelector 함수를 사용하여 나중에 그룹화 및 접기 작업 중 하나와 함께 사용할 컬렉션에서 그룹화 소스를 만듭니다.
- eachCount : 각 그룹의 키를 그룹의 요소 수와 연결하는 맵을 반환합니다.
public inline fun <T, K> Iterable<T>.groupingBy(crossinline keySelector: (T) -> K): Grouping<T, K> {
return object : Grouping<T, K> {
override fun sourceIterator(): Iterator<T> = this@groupingBy.iterator()
override fun keyOf(element: T): K = keySelector(element)
}
}
val words = "one two three four five six seven eight nine ten".split(' ')
val frequenciesByFirstChar = words.groupingBy { it.first() }.eachCount()
println("Counting first letters:")
println(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())
println(moreFrequencies) // {o=1, t=4, f=2, s=2, e=2, n=1}
'코틀린 > [Aggregation] 집계 작업' 카테고리의 다른 글
[Kotlin][Set] union, subtract, intersect (합집합, 차집합, 교집합) (0) | 2024.09.07 |
---|---|
[Kotlin][Collection] groupBy (0) | 2024.09.04 |
[Kotlin][Collection] count (0) | 2024.08.14 |