본문 바로가기
Language/Kotlin

코틀린의 `joinToString()`: 모든 것을 알아보자

by 시니성 2023. 8. 31.

코틀린에서는 컬렉션의 요소를 문자열로 조합하여 출력할 때 유용한 joinToString() 함수를 제공합니다. 이 함수는 유연하게 사용할 수 있는 파라미터를 다양하게 제공하며, 원하는 형태로 문자열을 조합할 수 있습니다.

1. 기본 파라미터

  • separator: 요소들 사이에 삽입될 구분자입니다. 기본값은 ", "입니다.
  • prefixpostfix: 생성된 문자열의 앞과 뒤에 추가될 값입니다. 기본값은 빈 문자열입니다.
  • limit: 반환되는 문자열에 포함될 최대 요소 수입니다. 이를 초과하는 경우, truncated로 지정된 문자열로 대체됩니다. 기본값은 Int.MAX_VALUE입니다.
  • truncated: limit에 지정된 수를 초과하는 요소들을 대체할 문자열입니다. 기본값은 "..."입니다.
  • transform: 각 요소를 문자열로 변환하기 전에 적용될 람다 함수입니다.

2. 가상 시나리오: 도서 목록 출력

우리는 여러 권의 도서와 각 도서의 저자, 출판일, 장르 정보를 가지고 있습니다. 이를 예쁜 문자열 형태로 출력하려고 합니다.

data class Book(val title: String, val author: String, val year: Int, val genre: String)

fun main() {
    val books = listOf(
        Book("Clean Code", "Robert C. Martin", 2008, "Software Engineering"),
        Book("Effective Java", "Joshua Bloch", 2018, "Java Programming"),
        Book("The Pragmatic Programmer", "Andrew Hunt, David Thomas", 1999, "Software Engineering"),
        Book("Harry Potter", "J.K. Rowling", 1997, "Fiction")
    )

    // 기본 출력: 각 도서의 제목만 출력
    println(books.joinToString(separator = ", ", transform = { it.title })) 
    // 출력 예: Clean Code, Effective Java, The Pragmatic Programmer, Harry Potter

    // prefix, postfix 사용 예: 목록을 괄호로 감싸서 출력
    println(books.joinToString(separator = ", ", prefix = "[", postfix = "]", transform = { it.title }))
    // 출력 예: [Clean Code, Effective Java, The Pragmatic Programmer, Harry Potter]

    // limit, truncated 사용 예: 최대 2개의 도서만 출력하고, 나머지는 '...'으로 표시
    println(books.joinToString(separator = ", ", limit = 2, truncated = "...", transform = { it.title }))
    // 출력 예: Clean Code, Effective Java, ...

    // transform 사용 예: 저자와 출판년도도 함께 출력
    println(books.joinToString(separator = "\n") { "${it.title} by ${it.author} (${it.year})" })
    // 출력 예:
    // Clean Code by Robert C. Martin (2008)
    // Effective Java by Joshua Bloch (2018)
    // The Pragmatic Programmer by Andrew Hunt, David Thomas (1999)
    // Harry Potter by J.K. Rowling (1997)
}

이 예시에서는 joinToString() 함수의 다양한 파라미터를 활용하여 도서 목록을 원하는 형태로 출력하고 있습니다. 특히, transform 파라미터를 사용하여 각 도서의 제목뿐만 아니라 저자와 출판년도까지 출력하는 것을 확인할 수 있습니다.

결론

코틀린의 joinToString() 함수는 컬렉션의 요소를 문자열로 변환하고 조합하는 데 있어 강력하고 유연한 도구입니다. 다양한 파라미터를 활용하여 원하는 형태로 문자열을 출력할 수 있습니다.

'Language > Kotlin' 카테고리의 다른 글

`reified`란?  (0) 2023.09.04
Inline 함수란?  (0) 2023.09.04
Kotlin에서의 꼬리 재귀와 피보나치 수열  (0) 2023.08.29
Kotlin에서의 tailrec 이해하기  (0) 2023.08.29
코틀린의 fold()와 foldRight()  (0) 2023.08.29