[Kotlin] joinToString ?

Delight Yoon·2022년 10월 29일
0

Kotlin

목록 보기
5/6
post-thumbnail

joinToString ?

listprintln()으로 출력하면 자동으로 toString() 메서드를 사용하여 출력하며, [ ... ] 형태로 출력이 된다.

먼저 joinToString 의 코드를 확인해보자.

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 개수만큼 요소를 출력 후, 컬렉션의 원소를 모두 표현하지 못할 때 이 값을 표현. ( 기본 값은 "..." )

예제로 확인해보자.

fun main(args: Array<String>) {
    println("=================숫자 리스트=====================")
    val ml = listOf(5, 1, 2, 3, 4)
    println("List : $ml")
    println(ml.joinToString(""))
    println(ml.joinToString("|", "<", ">"))     // 순서대로 입력하였으므로
    println(ml.joinToString( prefix = "<", separator = "|", postfix =  ">"))    // 임의 순으로 입력하려면 지정해주어야 한다.
    println(ml.joinToString(separator = "|", prefix = "<", postfix = ">", limit = 2))     // 2개 이후 ...으로 표현



    println("================문자열 리스트=====================")
    val str = "ABcdEFgh"
    val ml2 = str.toMutableList()
    println("List : $ml2")
    println("문자열 : ${ml2.joinToString(separator = "")} ") // ABcdEFgh
    println(ml2.joinToString("-")) // A-B-c-d-E-F-g-h
    println(ml2.joinToString("->", "start ", " end")) // start A->B->c->d->E->F->g->h end

    val li = ml2.map { it + 1 }     // 알파벳 한칸 씩 이동
    var str2 = li.joinToString("")
    println("문자열 알파벳 한칸 씩 이동 : $str2")



    // Map의 경우 - key와 value 기준으로 joinToString을 사용할 수 있음.
    var mm = mutableMapOf(1 to "sdf", 2 to "qwe")
    println(mm.keys.joinToString("")) // 12
    println(mm.values.joinToString("")) // sdfqwe
}

출력결과

=================숫자 리스트=====================
List : [5, 1, 2, 3, 4]
51234
<5|1|2|3|4>
<5|1|2|3|4>
<5|1|...>
================문자열 리스트=====================
List : [A, B, c, d, E, F, g, h]
문자열 : ABcdEFgh 
A-B-c-d-E-F-g-h
start A->B->c->d->E->F->g->h end
문자열 알파벳 한칸 씩 이동 : BCdeFGhi
12
sdfqwe

Map의 경우, KeyValue 를 기준으로 joinToString()을 사용할 수 있다.

📌 참조

profile
Yoon's Dev Blog

0개의 댓글