[Kotlin in Action] 7. 코틀린 컬렉션 만들기 (Set, Map, List)

반응형
728x90
반응형

코틀린에서의 컬렉션

코틀린은 자신만의 컬렉션 기능을 제공하지 않고, 자바 컬렉션을 활용한다. 코틀린에서는 변경 가능한(mutable) 컬렉션과 변경 불가능한(immutable) 컬렉션으로 구분하여 사용한다.

 

Set

데이터 순서가 없으며, 중복이 불가능하다. 기본적으로 변경 불가능(immutable)하며, mutableSetOf(), hashSetOf(), linkedSetOf(), sortedSetOf()로 변경 가능한 Set 생성이 가능하다.

fun main() {
    val set = hashSetOf(1, 7, 53)
    
    // 객체가 어떤 클래스에 속하는지 추측하기
    println(set.javaClass) // Java의 getClass()
}

 

Map

key와 value가 한 쌍의 데이터로 이루어진 컬렉션으로, key는 중복이 불가능하고 value는 중복 가능하다. 기본적으로는 변경 불가능(immutable)하고, mutableMapOf(), hashMapOf(), linkedMapOf(), sortedMapOf()로 변경 가능한 Map 생성이 가능하다.

fun main() {
    val map = hashMapOf(1 to "one", 7 to "seven", 53 to "fifty-three") // to : 일반함수

    // 객체가 어떤 클래스에 속하는지 추측하기
    println(map.javaClass) // Java의 getClass()
}

 

List

기본적으로는 변경 불가능(immutable)하고, mutableListOf()를 사용하여 변경 가능한 List 생성이 가능하다.

fun main() {
    val list = arrayListOf(1, 7, 53)

    // 객체가 어떤 클래스에 속하는지 추측하기
    println(list.javaClass) // Java의 getClass()
}

 

 

자바 컬렉션 활용 이유

표준 자바 컬렉션을 사용하면 자바 코드와 상호작용하기가 훨씬 더 쉽다. 자바에서 코틀린 함수를 호출하거나 코틀린에서 자바 함수를 호출할때 자바와 코틀린 컬렉션을 서로 변환할 필요가 없다. 코틀린 컬렉션은 자바 컬렉션과 똑같은 클래스고, 자바보다 더 많은 기능을 사용할 수 있다.

 

  • 리스트의 마지막 원소 가져오기
fun main() {
    // 리스트의 마지막 원소를 가져올 수 있다.
    val strings = listOf("first", "Second", "fourteenth")
    println(strings.last())
}

 

  • 수로 이뤄진 컬렉션에서 최댓값 가져오기
fun main() {
    // 수로 이뤄진 컬렉션에서 최댓값을 찾을 수 있다.
    val numbers = setOf(1, 14, 8);
    println(numbers.max())
}

 

반응형

Designed by JB FACTORY