그룹화와 분할
데이터를 정리합니다
그룹화와 분할은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
데이터 구성
컬렉션을 여러 범주로 나누어야 할 때가 있습니다. Kotlin은 키를 기준으로 요소를 묶는 groupBy와 조건에 따라 두 목록으로 나누는 partition을 제공합니다.
partition 함수
partition은 컬렉션을 두 목록의 쌍으로 나눕니다. 하나에는 조건을 만족하는 요소가, 다른 하나에는 만족하지 않는 요소가 들어갑니다.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
val (even, odd) = numbers.partition { it % 2 == 0 }
println("Even: $even")
println("Odd: $odd")
}쌍 구조 분해
partition은 Pair를 반환하므로 위에 나온 것처럼 두 개의 이름 있는 변수로 바로 구조를 분해할 수 있습니다. .first와 .second에 접근할 수도 있습니다.
fun main() {
val result = listOf(10, -5, 3, -8).partition { it >= 0 }
println(result.first)
println(result.second)
}groupBy 함수
groupBy는 선택 함수가 각 키를 만들고, 값으로는 해당 키를 공유하는 요소들의 목록을 갖는 Map을 만듭니다.
fun main() {
val words = listOf("apple", "banana", "avocado", "cherry")
val byFirstLetter = words.groupBy { it.first() }
println(byFirstLetter)
}계산된 키로 그룹화하기
키는 문자열의 길이나 나머지처럼 계산된 어떤 값이든 될 수 있습니다.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6, 7)
val byRemainder = numbers.groupBy { it % 3 }
println(byRemainder)
}값 변환을 적용한 groupBy
groupBy는 각 값을 그룹에 넣기 전에 변환하는 두 번째 람다를 받을 수 있습니다.
fun main() {
val words = listOf("red", "rose", "blue", "berry")
val grouped = groupExample(words)
println(grouped)
}
fun groupExample(words: List<String>) =
words.groupBy({ it.first() }, { it.uppercase() })그룹 순회하기
groupBy는 Map을 반환하므로 항목을 순회하며 각 그룹을 처리할 수 있습니다.
fun main() {
val animals = listOf("cat", "cow", "dog", "duck")
val groups = animals.groupBy { it.first() }
for ((letter, list) in groups) {
println("$letter -> $list")
}
}groupingBy로 개수 세기
키별 개수를 세려면 groupingBy 다음에 eachCount를 사용하는 것이 효율적이고 의미도 분명합니다.
fun main() {
val letters = listOf("a", "b", "a", "c", "b", "a")
val counts = letters.groupingBy { it }.eachCount()
println(counts)
}partition과 filter 비교
조건을 만족하는 요소만 필요하면 filter를 사용합니다. 조건을 만족하는 요소와 만족하지 않는 요소가 BOTH 필요하면 partition이 한 번의 순회로 처리하여 두 목록을 모두 반환합니다.
fun main() {
val ages = listOf(15, 22, 17, 30, 12)
val (adults, minors) = ages.partition { it >= 18 }
println("Adults: $adults, Minors: $minors")
}groupBy와 partition 중 선택하기
예/아니요 조건으로 정의된 정확히 두 개의 그룹이 필요하면 partition을 사용합니다. 어떤 속성을 키로 삼아 여러 그룹으로 나눌 수 있다면 groupBy를 사용합니다.
실용적인 그룹화
그룹화와 분할을 사용하면 장황한 수동 순회를 맵과 목록으로 대체할 수 있습니다. 의도를 명확하게 표현하고 관리 작업에서 발생하는 오류도 줄여 줍니다.
빠른 확인
partition은 무엇을 반환하나요?
복습
조건에 따라 두 목록으로 나누는 partition, 키를 기준으로 맵에 묶는 groupBy, 그리고 개수를 세는 groupingBy().eachCount()를 배웠습니다. 다음에는 집계를 사용해 컬렉션을 하나의 값으로 줄이는 방법을 알아보겠습니다.
AI 튜터와 함께 Kotlin을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 51
- 레슨
- 203
자주 묻는 질문
“그룹화와 분할” 강의는 무료인가요?
네 — “그룹화와 분할” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“그룹화와 분할”에서 뭘 배우나요?
데이터를 정리합니다 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“그룹화와 분할” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.