【Android 入門開發實戰:口罩地圖】Kotlin 過濾(filter)集合資料用法

 

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

上一節課程,我們使用了 CardView 卡片式佈局,讓資料更好閱讀,但大家會發現,要找到自己住家周邊藥局還是很麻煩,所以這一節課程,KT 將要來介紹一下,如何從口罩資料中,透過 Kotlin 標準函式庫中,所提供的 filter 語法,來獲取出我們要的資料。

filter 濾出特定資料

透過 filter 語法,過濾出縣市為「臺東縣」且鄉鎮為「池上鄉」的藥局資料:

val filterData = pharmacyInfo.features.filter { it.properties.county == "臺東縣" &&  it.properties.town=="池上鄉"}

透過上方語法,我們將可以在將近六千筆的藥局資料當中,快速過濾篩選出此筆資料:

{
    "type": "Feature",
    "properties": {
        "id": "2346100018",
        "name": "台東縣池上鄉衛生所",
        "phone": "(089)862609",
        "address": "臺東縣池上鄉中山路104號",
        "mask_adult": 1062,
        "mask_child": 170,
        "updated": "2020\/09\/24 14:32:36",
        "available": "星期一上午看診、星期二上午看診、星期三上午看診、星期四上午看診、星期五上午看診、星期六上午休診、星期日上午休診、星期一下午看診、星期二下午看診、星期三下午看診、星期四下午看診、星期五下午看診、星期六下午休診、星期日下午休診、星期一晚上休診、星期二晚上休診、星期三晚上休診、星期四晚上休診、星期五晚上休診、星期六晚上休診、星期日晚上休診",
        "note": "星期四下午無門診(醫師支援他所)、上班時間有代售防疫口罩服務(如遇假日則暫停代售)",
        "custom_note": "",
        "website": "",
        "county": "臺東縣",
        "town": "池上鄉",
        "cunli": "福原村",
        "service_periods": "NNNNNYYNNNYNYYYYYYYYY"
    },
    "geometry": {
        "type": "Point",
        "coordinates": [
            121.214811,
            23.121687
        ]
    }
}

forEach 取出所有資料

透過 forEach 的語法,可以印出我們剛剛篩選出來的藥局名稱

filterData.forEach{
                println(it.properties.name)
            }

輸出結果

台東縣池上鄉衛生所

參考資料

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