<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/904e5e50-75a6-4c6d-807c-5c432db9bb0f/cbf1bb0a-1633-4e02-96ff-ff688e28004d/Kotlin_Icon_2021.svg.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/904e5e50-75a6-4c6d-807c-5c432db9bb0f/cbf1bb0a-1633-4e02-96ff-ff688e28004d/Kotlin_Icon_2021.svg.png" width="40px" /> 3장 목차

</aside>

1. 코틀린에서 컬렉션 만들기

(1) 코틀린의 컬렉션

fun main() {
    val set = hashSetOf(1, 2, 3)
    val list = arrayListOf(1, 2, 3)
    val map = hashMapOf(1 to "one", 7 to "seven", 10 to "ten")
    println(set.javaClass)
    println(list.javaClass)
    println(map.javaClass)
}

//출력값
//class java.util.HashSet
//class java.util.ArrayList
//class java.util.HashMap

2. 함수를 호출하기 쉽게 만들기 : joinToString

	val list = listOf(1, 2, 3)
	println(list) //출력값 [1, 2, 3]

(1) joinToString 함수를 직접 구현해보자.

fun main() {
    val list = listOf(1, 2, 3)
    println(jointoString(list, "; ", "(", ")"))
    //출력값
    result start: (
		result end: (1
		result start: (1
		result end: (1; 2
		result start: (1; 2
		result end: (1; 2; 3
		(1; 2; 3)
}

//joinToString 함수를 직접 구현해보자
fun <T> jointoString(
    collection: Collection<T>,
    separator: String,
    prefix: String,
    postfix: String
): String {
    val result = StringBuilder(prefix)
    for ((index, element) in collection.withIndex()) {
        println("result start: ${result}")
        if (index > 0) result.append(separator) //첫 원소앞에는 구분자를 붙이면 안된다
        result.append(element)
        println("result end: ${result}")
    }
    result.append(postfix)
    return result.toString()
}

(2) joinToString 함수를 덜 번잡하게, 이름 붙인 인자

jointoString(list, "; ", "(", ")") //가독성이 매우 떨어진다.

jointoString(list, separator = " ", prefix = "(", postfix = ")") //인자의 이름을 명시할 수 있다.

(3) 디폴트 파라미터 값