В Java 8 есть Stream.collect
который допускает агрегации в коллекциях. В Kotlin, это не существует таким же образом, за исключением, может быть, как набор функций расширения в stdlib. Но не ясно, каковы эквивалентности для разных вариантов использования.
Например, в верхней части JavaDoc for Collectors
приведены примеры, написанные для Java 8, и при портировании их на Kolin вы не можете использовать классы Java 8 в другой версии JDK, поэтому, скорее всего, они должны быть написаны по-другому.
С точки зрения ресурсов онлайн, показывающих примеры коллекций Kotlin, они, как правило, тривиальны и на самом деле не сравниваются с теми же вариантами использования. Каковы хорошие примеры, которые действительно соответствуют случаям, таким как документированные для Java 8 Stream.collect
? Список там есть:
- Накапливать имена в список
- Накапливать имена в TreeSet
- Преобразуйте элементы в строки и объедините их через запятую
- Рассчитать сумму зарплаты работника
- Сотрудники группы по отделам
- Рассчитать сумму зарплат по отделам
- Разделить студентов на прохождение и провал
С деталями в JavaDoc связаны выше.
Примечание: этот вопрос намеренно написан и получен ответ от автора (Вопросы с самоотвечением), так что идиоматические ответы на часто задаваемые котлинские темы присутствуют в SO. Также, чтобы уточнить некоторые действительно старые ответы, написанные для альфа-версий Kotlin, которые не являются точными для сегодняшнего Kotlin.