Функция joinTo
Функция joinTo преобразует все элементы коллекции в строки,
объединяет их с помощью указанного разделителя и добавляет
полученный результат к существующему объекту Appendable.
Функция работает с массивами Array, списками List,
множествами Set и другими типами коллекций, реализующими интерфейс Iterable.
Импорт
import kotlin.collections.joinTo
Синтаксис
fun <T> Array<out T>.joinTo(
buffer: A,
separator: CharSequence = ", ",
prefix: CharSequence = "",
postfix: CharSequence = "",
limit: Int = -1,
truncated: CharSequence = "...",
transform: ((T) -> CharSequence)? = null
): A
fun <T> Iterable<T>.joinTo(
buffer: A,
separator: CharSequence = ", ",
prefix: CharSequence = "",
postfix: CharSequence = "",
limit: Int = -1,
truncated: CharSequence = "...",
transform: ((T) -> CharSequence)? = null
): A
Параметры
buffer - объект Appendable, к которому добавляется результат;
separator - разделитель между элементами (по умолчанию ", ");
prefix - строка, добавляемая в начало результата (по умолчанию пустая);
postfix - строка, добавляемая в конец результата (по умолчанию пустая);
limit - максимальное количество отображаемых элементов (по умолчанию -1 - без ограничений);
truncated - строка, указывающая на обрезание элементов (по умолчанию "...");
transform - функция преобразования элементов перед добавлением (по умолчанию null).
Пример
Объединим элементы списка List и добавим результат к StringBuilder:
val numbers = listOf(1, 2, 3, 4, 5)
val buffer = StringBuilder("Numbers: ")
numbers.joinTo(buffer, separator = " | ")
println(buffer.toString())
Результат выполнения кода:
String "Numbers: 1 | 2 | 3 | 4 | 5"
Пример
Объединим элементы массива Array с префиксом и постфиксом:
val chars = arrayOf('a', 'b', 'c', 'd', 'e')
val buffer = StringBuilder()
chars.joinTo(
buffer,
separator = "-",
prefix = "[",
postfix = "]"
)
println(buffer.toString())
Результат выполнения кода:
String "[a-b-c-d-e]"
Пример
Используем ограничение количества элементов и функцию преобразования:
val numbers = setOf(10, 20, 30, 40, 50)
val buffer = StringBuilder("Limited: ")
numbers.joinTo(
buffer,
separator = ", ",
prefix = "(",
postfix = ")",
limit = 3,
transform = { it.toString() + "!" }
)
println(buffer.toString())
Результат выполнения кода:
String "Limited: (10!, 20!, 30!, ...)"
Пример
Объединим элементы множества Set с добавлением к файловому буферу:
val words = setOf("apple", "banana", "cherry")
val file = java.io.File("output.txt")
val writer = file.bufferedWriter()
words.joinTo(writer, separator = "\n")
writer.close()
Содержимое файла output.txt:
apple
banana
cherry
Смотрите также
-
функцию
joinToString,
которая возвращает результат в виде строки -
функцию
toString,
которая преобразует коллекцию в строку -
функцию
aggregate,
которая выполняет агрегацию элементов коллекции -
функцию
fold,
которая аккумулирует значения