Building Strings Efficiently

StringBuilder and buildString

Because strings are immutable, adding to a string in a loop creates a new string every time. For many additions use StringBuilder or the Kotlin helper buildString { }.

Example

Both produce the same result; buildString is the idiomatic Kotlin way.

fun main() {
    val sb = StringBuilder()
    for (i in 1..5) {
        sb.append(i).append(" ")
    }
    println(sb.toString().trim())

    val receipt = buildString {
        append("Items: ")
        append("Dosa, Idli, Vada")
        appendLine()
        append("Total: ₹180")
    }
    println(receipt)
}

Output

1 2 3 4 5
Items: Dosa, Idli, Vada
Total: ₹180

joinToString

Example

To join a list into one string, use joinToString.

fun main() {
    val toppings = listOf("Onion", "Capsicum", "Paneer")
    println(toppings.joinToString())
    println(toppings.joinToString(" | "))
    println(toppings.joinToString(prefix = "[", postfix = "]", separator = ", "))
}

Output

Onion, Capsicum, Paneer
Onion | Capsicum | Paneer
[Onion, Capsicum, Paneer]