Day 19:Kotlin 分组(groupBy)集合资料用法

本篇文章同步发表在 HKT 线上教室 部落格,线上影音教学课程已上架至 UdemyYoutube 频道。另外,想追踪更多相关技术资讯,欢迎到 脸书粉丝专页 按赞追踪喔~

今天,KT 将要来介绍一下,如何从将近六千多笔药局口罩资料中,透过 Kotlin 标准函式库,所提供的 groupBy 分组语法,来获取出我们要的资料。

groupBy 分组出特定资料

透过 groupBy 语法,可以帮我们分组出资料,以县市为例:

val countyData = pharmacyInfo.features.groupBy { it.properties.county }
        for (county in countyData) {
            println(county.key)
        }

KT 贴心提醒:当要取出很多层回圈的资料时,良好的程序习惯,建议不要使用 i、j、k 命名变数资料。

输出结果

花莲县
台东县
澎湖县
屏东县
高雄市
台南市
嘉义县
云林县
嘉义市
南投县
彰化县
台中市
桃园市
新竹县
苗栗县
新竹市
新北市
宜兰县
基隆市
台北市
金门县
连江县

groupBy 分组县市与乡镇

进一步分组出县市与乡镇资料

val countyData = pharmacyInfo.features.groupBy { it.properties.county }
for (county in countyData) {
    println(county.key)
    val townData = county.value.groupBy { it.properties.town }
    for (town in townData) {
        println("------${town.key}")
    }
}

输出结果

花莲县
------玉里镇
------新城乡
------吉安乡
------花莲市
------凤林镇
------瑞穗乡
------寿丰乡
------光复乡
------富里乡
------秀林乡
------万荣乡
------卓溪乡
------丰滨乡
------
台东县
------台东市
------关山镇
------鹿野乡
------太麻里乡
------成功镇
------长滨乡
------卑南乡
------大武乡
------东河乡
------池上乡
------绿岛乡
------延平乡
------海端乡
------达仁乡
------金峰乡
------兰屿乡
...
...
...

groupBy 各县市各药局口罩数量

val countyData = pharmacyInfo.features.groupBy { it.properties.county }
for (county in countyData) {
    println(county.key)
    val townData = county.value.groupBy { it.properties.town }
    for (town in townData) {
        println("------${town.key}")
        for (pharmacy in town.value) {
            println("${pharmacy.properties.name}: 成人:${pharmacy.properties.mask_adult},小孩成人:${pharmacy.properties.mask_child}")
        }
    }
}

输出结果

花莲县
------玉里镇
德兴药局: 成人:1269,小孩成人:190
仁德药局: 成人:1665,小孩成人:200
东玉药局: 成人:1548,小孩成人:170
里安药局: 成人:1773,小孩成人:200
锦玉药局: 成人:1402,小孩成人:170
庄药局: 成人:1431,小孩成人:180
花莲县玉里镇卫生所: 成人:1548,小孩成人:200
------新城乡
黄药局: 成人:1062,小孩成人:120
丽康药局: 成人:1773,小孩成人:200
佳安药局: 成人:1467,小孩成人:140
花莲县新城乡卫生所: 成人:1422,小孩成人:180
...
...
...

参考资料

HKT 线上教室
https://tw-hkt.blogspot.com/

Freepik
https://www.freepik.com/

Kotlin Collections Overview
https://kotlinlang.org/docs/reference/collections-overview.html#kotlin-collections-overview

Filtering
https://kotlinlang.org/docs/reference/collection-filtering.html#filtering

Grouping
https://kotlinlang.org/docs/reference/collection-grouping.html#grouping


在过往学生看书学习生涩的程序语法,常表示搭配不知道要干嘛的例子,真的很让人头疼,希望透过这一次活生生的例子,大家可以感受到 groupBy 分组语法的强大。

那今天【iThome 铁人赛】就介绍到这边罗~

顺带一提,KT 线上教室,脸书粉丝团,会不定期发布相关资讯,不想错过最新资讯,不要忘记来按赞,追踪喔!也欢迎大家将这篇文章分享给更多人喔。

我们明天再见罗!!!掰掰~


<<:  Day.11 搞懂主从架构- 主从复制(Master Slave Replication)

>>:  Day 19 Azure machine learning: workspace and compute group- 从零开始

[DAY25]Istio延伸功能-Rate Limits限流

Rate Limits Rate Limits主要功能是防止request过量打爆服务,当同一来源的...

javascript变数与运算子2

接下来介绍各种运算子,也是用程序码跟注解做说明 以下是执行程序 ...

Day 29 - 倒数第二篇的胡言乱语

最近又从主管那边收到要做新的专案。 如果计画时间上线时间合理,不是十天没日没夜的工作,通常都会觉得这...

26.Computed vs Methods

比较下面两个用法: <!-- computed --> <div>{{ re...

Day 18 - Android Studio 如何切换Activity(分页)

Day 18 - Android Studio 如何切换Activity(分页) 昨天我们讲了如何使...