minstudio

16. 라이브러리와 API (Standard Library)

코틀린 표준 라이브러리는 자바 컬렉션 위에서 동작하지만, 어마어마하게 유용한 함수들을 제공합니다.

map, filter뿐만 아니라 groupBy, associate, zip 등 데이터를 파싱하고 정렬하고 조작하는 수십 가지의 컬렉션 확장 함수들을 지원하여 복잡한 로직을 단 한 줄로 끝낼 수 있게 돕습니다.

data class User(val name: String, val age: Int, val city: String)

fun main() {
    val users = listOf(
        User("Alice", 25, "Seoul"),
        User("Bob", 30, "Busan"),
        User("Charlie", 25, "Seoul"),
        User("David", 40, "Jeju")
    )

    // 1. filter 와 map
    // 나이가 30 이상인 사람들의 이름만 추출
    val over30Names = users.filter { it.age >= 30 }.map { it.name }
    println("30세 이상 이름: " + over30Names)

    // 2. groupBy (SQL의 GROUP BY와 완벽히 동일)
    // 도시(city)를 기준으로 유저들을 그룹화한 Map을 반환합니다.
    val usersByCity: Map<String, List<User>> = users.groupBy { it.city }
    println("Seoul 유저 수: " + usersByCity["Seoul"]?.size + "명")

    // 3. maxByOrNull, minByOrNull
    // 특정 조건을 기준으로 최댓값/최솟값을 가지는 객체를 찾습니다.
    val oldest = users.maxByOrNull { it.age }
    println("가장 나이 많은 사람: " + oldest?.name)

    // 4. any, all, none (조건 검사 Boolean)
    val hasSeoul = users.any { it.city == "Seoul" } // 서울 사는 사람이 하나라도 있나?
    val allAdults = users.all { it.age >= 18 }      // 모두가 성인인가?
    println("서울 거주자 존재? " + hasSeoul)
    println("모두 성인인가? " + allAdults)
}
16. 라이브러리와 API (Standard Library) | Minstudio