Ce face Iterable.joinToString
joinToString() transformă fiecare element în text și le unește. Implicit separatorul este ", ". Poți schimba separatorul, poți adăuga un prefix și un postfix și poți da o funcție transform care spune cum se scrie fiecare element.
Cu limit afișezi doar primele elemente, urmate de textul truncated (implicit ...). Toți parametrii au valori implicite, așa că se folosesc de obicei cu nume: joinToString(separator = " | ").
Parametri
| Parametru | Descriere |
|---|---|
separator |
Textul pus între elemente; implicit ", ". |
prefix / postfix |
Text pus la început și la final. |
limit / truncated |
Câte elemente se afișează și ce text urmează după ele. |
transform |
Funcția care transformă fiecare element în text. |
Ce returnează
Un String.
Exemple
Exemplul 1: Separatoare diferite
Fără argumente, elementele sunt separate prin virgulă și spațiu. Apoi folosim alt separator și paranteze.
fun main() {
val orase = listOf("Iași", "Cluj", "Timișoara")
println(orase.joinToString())
println(orase.joinToString(" - "))
println(orase.joinToString(separator = " | ", prefix = "[", postfix = "]"))
}
Rezultat
Iași, Cluj, Timișoara
Iași - Cluj - Timișoara
[Iași | Cluj | Timișoara]
Exemplul 2: Cu transformare
Lambda spune cum arată fiecare element în text: numele produsului și prețul.
fun main() {
val cos = listOf("pâine" to 4.5, "lapte" to 7.0, "mere" to 6.2)
val bon = cos.joinToString(separator = "\n") { (produs, pret) -> "$produs: $pret lei" }
println(bon)
}
Rezultat
pâine: 4.5 lei
lapte: 7.0 lei
mere: 6.2 lei
Exemplul 3: Listă lungă trunchiată
Din 20 de numere afișăm doar primele 5, urmate de „și altele”.
fun main() {
val numere = (1..20).toList()
println(numere.joinToString(limit = 5, truncated = "și altele"))
}
Rezultat
1, 2, 3, 4, 5, și altele
Greșeli frecvente
- Construiești textul cu o buclă și
+=, apoi tai ultima virgulă:joinToStringpune separatorul doar între elemente. - Afișezi un tablou cu
println(tablou)și apare ceva de forma[I@1b6d3586: foloseștetablou.joinToString()saucontentToString().
Comenzi înrudite
Iterable.map: Creează o listă nouă în care fiecare element este rezultatul funcției aplicate elementului original.Array.contentToString: contentToString afișează elementele tabloului ca text; contentEquals compară două tablouri element cu element.Iterable.fold: Pornește de la o valoare inițială și o combină pe rând cu fiecare element, întorcând rezultatul final.Iterable.forEach: Execută o acțiune pentru fiecare element, în ordine; forEachIndexed primește și poziția.