【Android 入門開發實戰:口罩地圖】Kotlin 分組(groupBy)集合資料用法

 

【Android 入門開發實戰:口罩地圖】線上免費講義課程目錄

這一節課程,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
...
...
...

參考資料

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

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

nano 文字編輯器

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

16天記下7000單字

Android Studio 歷代版本下載點