iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
Mobile Development

Android 口罩地圖入門實戰 30 天 (使用 Kotlin 程式語言)系列 第 19

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 18:Kotlin 過濾(filter)集合資料用法
下一篇
Day 20:縣市鄉鎮小工具包(util)
系列文
Android 口罩地圖入門實戰 30 天 (使用 Kotlin 程式語言)30

尚未有邦友留言

立即登入留言