KOTLIN · 컬렉션
groupBy와 associate
groupBy로 원소를 그룹화하고, associate로 맵을 생성합니다. 데이터 변환의 핵심 함수입니다.
컬렉션중급groupByassociateassociateBydata-transformation
핵심 설명
groupBy로 원소를 그룹화하고, associate로 맵을 생성합니다. 데이터 변환의 핵심 함수입니다.
Kotlin code
data class Employee(val name: String, val dept: String, val salary: Int)
fun main() {
val employees = listOf(
Employee("김철수", "개발", 5000),
Employee("이영희", "개발", 6000),
Employee("박지성", "마케팅", 4500),
Employee("최유리", "마케팅", 5500),
Employee("정민호", "인사", 4000),
)
// groupBy: 부서별 그룹화
val byDept = employees.groupBy { it.dept }
byDept.forEach { (dept, emps) ->
println("$dept: ${emps.map { it.name }}")
}
// associateBy: 키로 맵 생성
val byName = employees.associateBy { it.name }
println(byName["김철수"])
// associate: 키-값 쌍 맵 생성
val salaryMap = employees.associate { it.name to it.salary }
println(salaryMap)
// groupBy + 집계
val avgSalary = employees.groupBy { it.dept }
.mapValues { (_, emps) -> emps.map { it.salary }.average() }
println("부서별 평균: $avgSalary")
}학습 팁
groupBy는 한 키에 여러 값을, associateBy는 한 키에 하나의 값을 매핑합니다. 중복 키가 있으면 마지막 값이 유지됩니다.
주의할 점
associateBy에서 키가 중복되면 나중 값이 이전 값을 덮어씁니다. 중복이 예상되면 groupBy를 사용하세요.
자주 묻는 질문
groupBy와 associate란 무엇인가요?
groupBy 로 원소를 그룹화하고, associate 로 맵을 생성합니다. 데이터 변환의 핵심 함수입니다.
groupBy와 associate 학습 시 주의할 점은 무엇인가요?
associateBy 에서 키가 중복되면 나중 값이 이전 값을 덮어씁니다. 중복이 예상되면 groupBy 를 사용하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.