Группировка данных в Kotlin

kotlin

Статья о встро­енных фун­кци­ях груп­пиров­ки в язы­ке Kotlin.

РЕКОМЕНДУЕМ:

Группировка данных в Kotlin

В Kotlin есть фун­кция‑рас­ширение groupBy(), которую мож­но при­менить к кол­лекци­ям. Работа­ет она так:

Группировка данных в Kotlin

Как вид­но, фун­кция раз­бива­ет List на Map, где в качес­тве клю­чей исполь­зуют­ся зна­чения, получен­ные при выпол­нении ука­зан­ной в аргу­мен­те groupBy() лям­бды, а в качес­тве зна­чений — спи­сок зна­чений, вхо­дящих в эту груп­пу. В дан­ном слу­чае тело лям­бды — it.first(), поэто­му груп­пиров­ка про­исхо­дит по пер­вому сим­волу.

Ин­терес­но, что groupBy() при­нима­ет и вто­рой аргу­мент. В нем мож­но передать фун­кцию тран­сфор­мации, которая будет выпол­нена над зна­чени­ями кол­лекции.

Группировка данных в Kotlin

Еще одна фун­кция груп­пиров­ки — это  groupingBy(). В отли­чие от пре­дыду­щей, она пред­назна­чена не для груп­пиров­ки как таковой, а для выпол­нения над сгруп­пирован­ными дан­ными какой‑либо общей опе­рации. Допус­тим, мы хотим пос­читать количес­тво слов на каж­дую бук­ву в кол­лекции. Мы мог­ли бы сде­лать это в цик­ле, но мож­но обой­тись все­го одной стро­кой.

Группировка данных в Kotlin

Об­рати вни­мание, что фун­кция воз­вра­щает не Map или List, а объ­ект Grouping, над которым мы как раз и выпол­няем опе­рацию eachCount() — под­счет обще­го количес­тва эле­мен­тов в каж­дой груп­пе. Так­же Grouping под­держи­вает опе­рации fold(), reduce() и  aggregate(), о которых мож­но про­читать в офи­циаль­ной докумен­тации.

Бо­лее слож­ный при­мер, исполь­зующий обе фун­кции: под­счет количес­тва закон­ченных и незакон­ченных задач.

Группировка данных в Kotlin

Оригинальная статья Kotlin Grouping

Понравилась статья? Поделиться с друзьями:
Добавить комментарий