Day 18:Kotlin 过滤(filter)集合资料用法

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

昨天,我们使用了 CardView 卡片式布局,让资料更好阅读,但大家会发现,要找到自己住家周边药局还是很麻烦,所以今天,KT 将要来介绍一下,如何从将近六千多笔药局口罩资料中,透过 Kotlin 标准函式库,所提供的 filter 语法,来获取出我们要的资料。


此图片取自:Freepik

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)
            }

输出结果

台东县池上乡卫生所

参考资料

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


有没有惊喜感呀~ 在将近六千多笔药局口罩资料当中,说真的,如果要 KT 找出特定某间药局名称与口罩资料,真的会找到眼花了乱,但如果这次学会了我们 Kotlin 的 filter 语法,就会发现到,哇,原来找资料,只要塞入指定条件,不用几秒,瞬间就找到,我们要的资料。是不是真的很方便呢?

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

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

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


<<:  树选手2号:random forest

>>:  Angular 深入浅出三十天:表单与测试 Day03 - Reactive Forms 实作 - 以登入为例

机器学习:模型训练架构

分散式运算架构 MapReduce 利用函式语言程序设计的概念,将分散运算分为映射(Map)和归纳...

冒险村21 - draper

21 - Draper 上篇 Design Pattern(1) - Decorator 简单的介绍...

[JS] You Don't Know JavaScript [this & Object Prototypes] - this All Makes Sense Now! [上]

前言 在this Or That?中提到了许多对於this的误解,并且也对於这些误解做了一些解释,我...

Day8 区块元素与行内元素

网页容器概念 网页上的内容可以被分为排版用的容器(ex: <div> )与元素(ex:...

Sass 基础教学 DAY31

Sass 我们应该大部分的人都有听过 那它到底是什麽东西呢?? 我们先来介绍它到底是啥 维基百科ht...