목표

  • [1, 1, 2, 2, 3, 4, 4, 4, 5, 5, 5, 5, 5]의 경우, {1=2, 2=2, 3=1, 4=3, 5=5} 로 만들어주는 로직이 필요했다.

groupingBy

  • 코틀린 확장 함수
  • keySelector라는 함수를 함수를 명시해서 각 element에 key를 추출한다.
  • key별로 그룹핑한 값들을 Grouping<T, K> 클래스로 래핑한다. T가 원래 타입, K가 key의 타입이 된다.
  • Grouping<T, K> 클래스에서 eachCount()를 호출하면 각 그룹의 element 개수를 Map<K, Int> 형태로 반환한다.
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}

참고 자료