Kotlin Collection

[Kotlin] joinToString

별볼일있는 개발자 2024. 9. 6. 16:08

joinToString 공식문서

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/join-to-string.html

 

 

joinToString이란

kotlin에서 리스트나 배열에 있는 값을 문자열로 합치고 싶은 경우에 사용을 한다.

 

 

예를 들면 아래와 같은 리스트, 배열이 있는데 

val list = listOf(1, 2, 3, 4, 5)
val array = intArrayOf(1, 2, 3, 4, 5)

 

아래와 같이 리스트 안에 있는 값들을 합쳐서 하나의 문자열로 만들 때 사용을 하는 것이다.

 

 

joinToSring 의 내부 구현을 살펴보면,

public fun <T> Iterable<T>.joinToString(separator: CharSequence = ", ",
    prefix: CharSequence = "", 
    postfix: CharSequence = "", 
    limit: Int = -1, 
    truncated: CharSequence = "...", 
    transform: ((T) -> CharSequence)? = null
): String {
    return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString()
}

 

  • separator : 원소 사이에 들어갈 문자열을 설정 (""을 주면 공백없이 연결,  디폴트 : ", " 이라서 쉼표로 연결)
  • prefix : 연산결과 문자열의 맨 앞에 붙는 문자열 (디폴트는 "")
  • postfix : 연산결과 문자열의 맨 뒤에 붙는 문자열 (디폴트는 "")
  • limit : 출력할 요소의 개수를 제한 (디폴트는 -1, 제한이 없다는 의미)
  • truncated : limit 개수만큼 요소를 출력 후, 컬렉션의 원소를 모두 표현하지 못할 때 이 값을 표현. ( 디폴트는 "..." )
  • transform : 각 요소를 변환하는 함수를 지정

 

위 요소들에 대한 예시를 들어보면

val list = listOf(1, 2, 3, 4, 5)

 

아래와 같이 joinToString 을 호출해보면 어떤 결과가 나올까?

print(
    list.joinToString(
        separator = "",
        prefix = "HI",
        postfix = "HI",
        limit = 3,
    )
)


출력
HI123...HI

 

 

설명)

공백없이 연결이기 때문에 위 리스트는 문자열 "12345" 로 변경이 된다.

그리고 prefix, postfix가  "HI" 라는 문자열이기 때문에 "HI12345HI" 로 변경이 되고

limit가 3이기 때문에 12345에서 123까지 나오게 된다.

그리고 truncated가 기본값인 "..." 이기 때문에 45 부분은 "..." 로 변경이 되서

최종적으로 "HI123...HI" 로 나오게 된다.

'Kotlin Collection' 카테고리의 다른 글

[Kotlin] sortedWith()  (2) 2024.09.10
[Kotlin] partition  (3) 2024.09.07