컬렉션의 데이터 클래스
맵과 집합에서 사용합니다
컬렉션의 데이터 클래스은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
데이터 클래스와 컬렉션의 만남
데이터 클래스에는 값을 기반으로 하는 equals와 hashCode가 있으므로 컬렉션 안에서 완벽하게 작동합니다.
이 레슨에서는 데이터 클래스가 목록, 집합, 맵에서 어떻게 작동하는지 살펴봅니다.
목록에서 데이터 클래스 사용하기
데이터 객체를 목록에 저장하고 다른 요소와 같은 방식으로 순회할 수 있습니다.
읽기 쉬운 toString 덕분에 출력도 간단합니다.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Alice", 30), User("Bob", 25))
for (u in users) println(u)
}값으로 작동하는 contains
equals는 값을 비교하므로 contains는 서로 다른 인스턴스라도 같은 객체를 찾아냅니다.
완전히 동일한 참조일 필요는 없습니다.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Alice", 30))
println(users.contains(User("Alice", 30)))
}집합으로 중복 제거하기
집합은 equals와 hashCode를 사용해 중복을 거부합니다.
값이 같은 두 데이터 객체는 하나의 동일한 요소로 간주됩니다.
data class Point(val x: Int, val y: Int)
fun main() {
val set = setOf(Point(1, 1), Point(1, 1), Point(2, 2))
println(set.size)
}맵 키로 사용하는 데이터 클래스
조회가 값의 동등성에 의존하므로 데이터 클래스는 훌륭한 맵 키가 됩니다.
즉석에서 키 객체를 만들어도 저장된 값을 찾을 수 있습니다.
data class Coord(val x: Int, val y: Int)
fun main() {
val grid = mapOf(Coord(0, 0) to "start", Coord(1, 1) to "goal")
println(grid[Coord(1, 1)])
}맵 값으로 사용하는 데이터 클래스
물론 데이터 클래스를 값으로 사용할 수도 있으며, 이를 통해 id를 키로 하는 풍부한 레코드를 모델링할 수 있습니다.
이는 메모리 내 조회에서 흔히 사용하는 형태입니다.
data class User(val name: String, val age: Int)
fun main() {
val byId = mapOf(1 to User("Alice", 30))
println(byId[1]?.name)
}컬렉션 필터링
데이터 클래스와 filter 같은 컬렉션 함수를 결합해 데이터를 조회할 수 있습니다.
람다에서 속성에 바로 접근할 수 있습니다.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("A", 20), User("B", 40))
val adults = users.filter { it.age >= 30 }
println(adults)
}속성으로 매핑하기
map을 사용하면 객체 컬렉션을 하나의 속성만 담은 컬렉션으로 변환할 수 있습니다.
필요한 데이터만 추출하는 방식입니다.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Alice", 30), User("Bob", 25))
val names = users.map { it.name }
println(names)
}속성으로 그룹화하기
groupBy는 목록을 선택한 속성을 키로 하는 맵으로 변환합니다.
여기서는 사용자를 도시별로 그룹화합니다.
data class User(val name: String, val city: String)
fun main() {
val users = listOf(User("A", "Paris"), User("B", "Paris"), User("C", "Rome"))
val byCity = users.groupBy { it.city }
println(byCity["Paris"]?.size)
}불변 방식으로 항목 업데이트하기
불변 목록의 항목을 업데이트하려면 목록에 map을 적용하고 일치하는 요소에 copy를 사용합니다.
그 결과 객체 하나만 변경된 새 목록이 만들어집니다.
data class User(val name: String, val age: Int)
fun main() {
val users = listOf(User("Alice", 30), User("Bob", 25))
val updated = users.map { if (it.name == "Bob") it.copy(age = 26) else it }
println(updated)
}한데 모아 보기
데이터 클래스는 컬렉션 요소로 사용하기에 이상적입니다:
contains와 집합은 값을 기준으로 작동합니다- 안전하고 비교 가능한 맵 키를 만들 수 있습니다
filter,map,groupBy와 자연스럽게 함께 사용할 수 있습니다copy로 불변 업데이트를 수행할 수 있습니다
data class User(val name: String, val age: Int)
fun main() {
val users = setOf(User("Alice", 30), User("Alice", 30))
println(users.size)
println(users.map { it.name })
}빠른 확인
컬렉션에서 데이터 클래스를 사용하는 방법에 대한 이해도를 확인해 보세요.
복습
컬렉션에서 데이터 클래스가 작동하는 방식을 배웠습니다:
- 값의 동등성이
contains, 집합, 맵 키를 작동하게 합니다 filter,map,groupBy와 함께 사용할 수 있습니다copy로 불변 업데이트를 수행할 수 있습니다
이로써 데이터 클래스와 구조 분해 과정을 마칩니다.
자주 묻는 질문
“컬렉션의 데이터 클래스” 강의는 무료인가요?
네 — “컬렉션의 데이터 클래스” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“컬렉션의 데이터 클래스”에서 뭘 배우나요?
맵과 집합에서 사용합니다 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“컬렉션의 데이터 클래스” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 데이터 클래스 선언
- copy와 equals
- 구조 분해 선언
- 컬렉션의 데이터 클래스