Day 20:县市乡镇小工具包(util)

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

在之前的课程当中,我们介绍了 Kotlin 标准函式库中,所提供过滤(filter)与分组(group)语法,即时筛选出当下回传县市与乡镇资料。但实际在应用时,我们其实可以将县市与乡镇资料写成一个共用的方法,因为县市与乡镇资料,不会随时随刻一直在变,所以可以写成固定资料(死资料、Hardcode),当资料有变动时,我们在手动进行调整即可,这样可以大幅减少不必要的解析资料时间与提高装置运行的效能。

通常此类命名上,我们习惯会在用途的最後加上 util。例如:DeviceUtil、MathUtil...等。其中 util 是 utiliy 的缩写,意指为常用或共用的程序方法函数。所以这次「县市乡镇小工具包」,KT 将它命名为 CountyUtil。

CountyUtil

此县市乡镇资料,是根据 口罩资料 透过 kotlin 分组(groupBy)语法,取出各县市与乡镇资料。再根据集合资料 listOf 的方式,将资料分别组成 counties 与 towns。

object CountyUtil {
    private val counties = listOf(
        "基隆市", "台北市", "新北市",
        "桃园市", "新竹市", "新竹县",
        "苗栗县", "台中市", "彰化县",
        "南投县", "云林县", "嘉义市",
        "嘉义县", "台南市", "高雄市",
        "屏东县", "台东县", "花莲县",
        "宜兰县", "澎湖县", "金门县",
        "连江县"
    )
    private val towns =
        listOf(
            //基隆市
            listOf(
                "中正区",
                "七堵区",
                "暖暖区",
                "信义区",
                "仁爱区",
                "中山区",
                "安乐区"
            ),
            //台北市
            listOf(
                "北投区",
                "中山区",
                "信义区",
                "士林区",
                "大安区",
                "大同区",
                "文山区",
                "万华区",
                "南港区",
                "松山区",
                "中正区",
                "内湖区"
            ),
            //新北市
            listOf(
                "三峡区",
                "淡水区",
                "新店区",
                "三重区",
                "板桥区",
                "汐止区",
                "新庄区",
                "中和区",
                "林口区",
                "石门区",
                "双溪区",
                "金山区",
                "永和区",
                "五股区",
                "树林区",
                "泰山区",
                "土城区",
                "莺歌区",
                "芦洲区",
                "瑞芳区",
                "三芝区",
                "石碇区",
                "八里区",
                "深坑区",
                "坪林区",
                "平溪区",
                "贡寮区",
                "万里区",
                "乌来区"
            ),
            //桃园市
            listOf(
                "龟山区",
                "八德区",
                "芦竹区",
                "大园区",
                "新屋区",
                "观音区",
                "龙潭区",
                "平镇区",
                "中坜区",
                "桃园区",
                "杨梅区",
                "大溪区",
                "复兴区"
            ),
            //新竹市
            listOf(
                "东区",
                "北区",
                "香山区"
            ),
            //新竹县
            listOf(
                "新丰乡",
                "芎林乡",
                "竹北市",
                "湖口乡",
                "关西镇",
                "新埔镇",
                "竹东镇",
                "尖石乡",
                "宝山乡",
                "北埔乡",
                "横山乡",
                "峨眉乡",
                "五峰乡"
            ),
            //苗栗县
            listOf(
                "苗栗市",
                "卓兰镇",
                "大湖乡",
                "公馆乡",
                "铜锣乡",
                "头屋乡",
                "三义乡",
                "三湾乡",
                "竹南镇",
                "头份市",
                "後龙镇",
                "苑里镇",
                "通霄镇",
                "西湖乡",
                "南庄乡",
                "造桥乡",
                "狮潭乡",
                "泰安乡"
            ),
            //台中市
            listOf(
                "梧栖区",
                "东势区",
                "大甲区",
                "丰原区",
                "太平区",
                "大里区",
                "龙井区",
                "雾峰区",
                "大雅区",
                "石冈区",
                "乌日区",
                "大肚区",
                "后里区",
                "神冈区",
                "潭子区",
                "清水区",
                "沙鹿区",
                "北区",
                "南区",
                "西区",
                "北屯区",
                "南屯区",
                "东区",
                "西屯区",
                "中区",
                "新社区",
                "和平区",
                "外埔区",
                "大安区"
            ),
            //彰化县
            listOf(
                "和美镇",
                "北斗镇",
                "彰化市",
                "鹿港镇",
                "社头乡",
                "二水乡",
                "埤头乡",
                "芳苑乡",
                "溪州乡",
                "秀水乡",
                "花坛乡",
                "芬园乡",
                "大村乡",
                "埔心乡",
                "永靖乡",
                "溪湖镇",
                "田中镇",
                "二林镇",
                "福兴乡",
                "员林市",
                "田尾乡",
                "线西乡",
                "伸港乡",
                "埔盐乡",
                "竹塘乡",
                "大城乡"
            ),

            //南投县
            listOf(
                "南投市",
                "埔里镇",
                "草屯镇",
                "仁爱乡",
                "竹山镇",
                "名间乡",
                "国姓乡",
                "水里乡",
                "鱼池乡",
                "集集镇",
                "中寮乡",
                "鹿谷乡",
                "信义乡"
            ),
            //云林县
            listOf(
                "斗南镇",
                "口湖乡",
                "斗六市",
                "水林乡",
                "麦寮乡",
                "东势乡",
                "褒忠乡",
                "元长乡",
                "四湖乡",
                "古坑乡",
                "大埤乡",
                "莿桐乡",
                "林内乡",
                "二仑乡",
                "仑背乡",
                "西螺镇",
                "土库镇",
                "北港镇",
                "虎尾镇",
                "台西乡"
            ),
            //嘉义市
            listOf(
                "西区",
                "东区"
            ),
            //嘉义县
            listOf(
                "大林镇",
                "民雄乡",
                "溪口乡",
                "朴子市",
                "水上乡",
                "中埔乡",
                "竹崎乡",
                "梅山乡",
                "番路乡",
                "新港乡",
                "义竹乡",
                "鹿草乡",
                "太保市",
                "布袋镇",
                "东石乡",
                "六脚乡",
                "大埔乡",
                "阿里山乡"
            ),
            //台南市
            listOf(
                "中西区",
                "东区",
                "归仁区",
                "东山区",
                "下营区",
                "六甲区",
                "官田区",
                "大内区",
                "西港区",
                "新市区",
                "新化区",
                "善化区",
                "学甲区",
                "柳营区",
                "後壁区",
                "白河区",
                "麻豆区",
                "佳里区",
                "永康区",
                "新营区",
                "盐水区",
                "安南区",
                "北区",
                "关庙区",
                "山上区",
                "玉井区",
                "南区",
                "左镇区",
                "仁德区",
                "安平区",
                "将军区",
                "楠西区",
                "北门区",
                "安定区",
                "七股区",
                "南化区",
                "龙崎区"
            ),
            //高雄市
            listOf(
                "弥陀区",
                "内门区",
                "梓官区",
                "甲仙区",
                "冈山区",
                "小港区",
                "凤山区",
                "前镇区",
                "旗津区",
                "鸟松区",
                "燕巢区",
                "阿莲区",
                "茄萣区",
                "林园区",
                "大寮区",
                "大树区",
                "仁武区",
                "旗山区",
                "美浓区",
                "三民区",
                "新兴区",
                "楠梓区",
                "苓雅区",
                "左营区",
                "盐埕区",
                "鼓山区",
                "前金区",
                "路竹区",
                "杉林区",
                "湖内区",
                "桥头区",
                "六龟区",
                "大社区",
                "田寮区",
                "永安区",
                "茂林区",
                "桃源区",
                "那玛夏区"
            ),
            //屏东县
            listOf(
                "屏东市",
                "新园乡",
                "林边乡",
                "南州乡",
                "佳冬乡",
                "车城乡",
                "万丹乡",
                "长治乡",
                "麟洛乡",
                "里港乡",
                "盐埔乡",
                "高树乡",
                "内埔乡",
                "枋寮乡",
                "潮州镇",
                "东港镇",
                "恒春镇",
                "枋山乡",
                "琉球乡",
                "春日乡",
                "九如乡",
                "万峦乡",
                "新埤乡",
                "竹田乡",
                "崁顶乡",
                "满州乡",
                "三地门乡",
                "雾台乡",
                "玛家乡",
                "泰武乡",
                "来义乡",
                "狮子乡",
                "牡丹乡"
            ),
            //台东县
            listOf(
                "台东市",
                "关山镇",
                "鹿野乡",
                "太麻里乡",
                "成功镇",
                "长滨乡",
                "卑南乡",
                "大武乡",
                "东河乡",
                "池上乡",
                "绿岛乡",
                "延平乡",
                "海端乡",
                "达仁乡",
                "金峰乡",
                "兰屿乡"
            ),
            //花莲县
            listOf(
                "玉里镇",
                "新城乡",
                "吉安乡",
                "花莲市",
                "凤林镇",
                "瑞穗乡",
                "寿丰乡",
                "光复乡",
                "富里乡",
                "秀林乡",
                "万荣乡",
                "卓溪乡",
                "丰滨乡"
            ),
            //宜兰县
            listOf(
                "罗东镇",
                "宜兰市",
                "员山乡",
                "冬山乡",
                "苏澳镇",
                "头城镇",
                "五结乡",
                "礁溪乡",
                "三星乡",
                "壮围乡",
                "南澳乡",
                "大同乡"
            ),
            //澎湖县
            listOf(
                "西屿乡",
                "马公市",
                "湖西乡",
                "白沙乡",
                "望安乡",
                "七美乡"
            ),
            //金门县
            listOf(
                "金城镇",
                "金沙镇",
                "金湖镇",
                "金宁乡",
                "烈屿乡"
            ),
            //连江县
            listOf(
                "北竿乡",
                "莒光乡",
                "东引乡",
                "南竿乡"
            )
        )

    /**
     * 获取所有县市名称
     * @return 返回所有县市名称
     */
    fun getAllCountiesName(): List<Any> {
        return counties
    }

    /**
     * 透过县市名称,获取特定乡镇名称
     * @param countyName 县市名称
     * @return 返回该县市的所有乡镇名称
     */
    fun getTownsByCountyName(countyName: String): List<Any> {
        val index = counties.indexOf(countyName)
        return towns[index]
    }
}

CountyUtil 使用方式

获取所有县市资料

val counties =CountyUtil.getAllCountiesName()
for (i in counties) {
    println(i)
}

输出结果

基隆市
台北市
新北市
...
...
...

获取特定县市乡镇资料

val towns = CountyUtil.getTownsByCountyName("连江县")
for (i in towns) {
    println(i)
}

输出结果

北竿乡
莒光乡
东引乡
南竿乡
...
...
...

参考资料

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

Freepik
https://www.freepik.com/


县市乡镇小工具,其实未来满多地方,都满有机会再次用到它的,希望这个小工具,在未来的开发路上可以帮助到大家。也藉这个机会说明,未来大家如果有常用或自己开发很酷、很好用的东西,也可以把他封装成一个小工具,发布出来分享给大家使用。

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

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

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


<<:  Day 20 : 模型优化 - 训练後量化 Post Training Quantization

>>:  Day8 Switch case

Day4 HTML 语法简易介绍(一)

HTML 语法简易介绍 HTML 是 Hypertext Markup Language 的缩写,也...

[Day 09] 建立机器学习模型 — Andrew Ng 大神说要这样做

AI system = Code (Algorithm/Model) + Data TL;DR 建...

[Day27] VSCode Plugin - WakaTime

官网连结 VSCode Marketplace 推荐程度:⭐⭐⭐⭐⭐ 有在写工作日志或周志,或是想...

day25 : kong api gateway(下)

kong的安装我同样会透过operator的方式进行,相信经过了这几天应该很多人都感受到operat...

14 实作出牌倒数 诶这是什麽放置游戏

实作出牌倒数计时 ok, 我们有两个地方需要开始计时 第一个是游戏开始的时候, 第二个是 turn ...