Функция joinTo

Функция joinTo преобразует все элементы коллекции в строки, объединяет их с помощью указанного разделителя и добавляет полученный результат к существующему объекту Appendable. Функция работает с массивами Array, списками List, множествами Set и другими типами коллекций, реализующими интерфейс Iterable.

Импорт

kotlinimport kotlin.collections.joinTo

Синтаксис

kotlinfun <T> Array<out T>.joinTo(
  buffer: A,
  separator: CharSequence = ", ",
  prefix: CharSequence = "",
  postfix: CharSequence = "",
  limit: Int = -1,
  truncated: CharSequence = "...",
  transform: ((T) -> CharSequence)? = null
): A
kotlinfun <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:

kotlinval numbers = listOf(1, 2, 3, 4, 5)
val buffer = StringBuilder("Numbers: ")

numbers.joinTo(buffer, separator = " | ")
println(buffer.toString())

Результат выполнения кода:

kotlinString "Numbers: 1 | 2 | 3 | 4 | 5"

Пример

Объединим элементы массива Array с префиксом и постфиксом:

kotlinval chars = arrayOf('a', 'b', 'c', 'd', 'e')
val buffer = StringBuilder()

chars.joinTo(
  buffer,
  separator = "-",
  prefix = "[",
  postfix = "]"
)
println(buffer.toString())

Результат выполнения кода:

kotlinString "[a-b-c-d-e]"

Пример

Используем ограничение количества элементов и функцию преобразования:

kotlinval 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())

Результат выполнения кода:

kotlinString "Limited: (10!, 20!, 30!, ...)"

Пример

Объединим элементы множества Set с добавлением к файловому буферу:

kotlinval 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:

kotlinapple
banana
cherry

Смотрите также

  • функцию joinToString,
    которая возвращает результат в виде строки
  • функцию toString,
    которая преобразует коллекцию в строку
  • функцию aggregate,
    которая выполняет агрегацию элементов коллекции
  • функцию fold,
    которая аккумулирует значения