什麼是 Kotlin Collection?

Kotlin 是一個在 2011 年由 JetBrains 發表的全新程式語言,不過直到 Google Android 團隊在 2017 年宣佈其成為官方優先支援(First-Class Support)、2019 年正式成為首選語言後,才廣為開發者所知。隨著 Kotlin 在 Android 開發上水漲船高,在程式語言排行榜也逐漸攀升,依照 RedMonk 的調查,Kotlin 在 2019 年已經擠進熱門排行榜前 20 名,是該排行榜進步最快的程式語言。而在 Upwork 的開發者薪資調查裡,Kotlin 名列第五。日前 Kotlin 1.4 版本正式發佈,除了強化跨平台 Mobile 開發外,在前、後端也有更好的支援及應用面向,後勢看漲!

為什麼學 Kotlin?

筆者的開發背景以後端為主,一直以來專注在 Web、使用的是弱型別語言。在新的一年決定跨出舒適圈,入手一門強型別語言,並以跨平台開發為目標,讓自己的守備範圍可以更寬廣,因此選擇 Kotlin 做為學習目標。除了自己私心的原因外,Kotlin 也有幾個知名的優點如下:

語法簡潔

Java 讓許多開發者詬病的就是其語法設計需要花很多時間來寫樣板(boilerplate)程式碼,雖然現代 IDE 如 IntelliJ IDEA 可以非常聰明的自動產生或補齊,但當程式碼修改時,一樣得花許多時間刪除或重新產生。Kotlin 是一個相對年輕的語言,在設計之初就參考了眾多現代語言最佳化,其簡潔、富表達力的語法可以讓開發者更好維護。

100% 相容 Java

一直以來,JetBrains 都是使用 Java 開發產品。但即便是 Kotlin 原創公司,開發語言也不可能一夕之間說換就換。因此 Kotlin 設計之初,就將與 Java 的相容性設定為必要條件。也就是說,您可以在專案裡用 Kotlin 來開發新功能,原有的 Java 程式碼可以與 Kotlin 一起編譯。這樣的特性,不僅讓原本由 Java 開發的專案可以無縫地遷移,也讓 Kotlin 能直接取用 Java 開發生態系裡所有現存套件。

跨平台

跨平台一直是開發者的夢與痛。Kotlin 在跨平台議題上付出了很大的努力,您可以用 Kotlin 撰寫相容於 JVM 的程式(Server-Side 及 Android)、也可以用 Kotlin/Native 撰寫跨足 iOS 的原生程式、甚至可以用 Kotlin/JS 來寫前端。有別於其他跨平台開發工具「寫一次、在所有平台上執行」的設計,Kotlin 讓您「用一種語言在所有平台開發、平台間共享邏輯」的策略,可以在跨平台、原生、效能各方面取得最好的平衡。

由商業公司支持的開放原始碼專案

身為開發者,我們都喜歡且支持開放原始碼專案。我們相信,透過開放原始碼,我們將建構一個自由、安全的軟體世界。但不可否認的,一個程式語言等級的軟體專案需要非常龐大的開發資源,單靠開發者志願貢獻來維持實有難度,其中也不乏失敗案例。而開發者在意的不只是原始碼是否開放,該程式語言是否穩定可用於商業環境、是否能在技術林立的現代持續發展也是評估的指標。

Kotlin 是由 JetBrains 所資助開發,並在公司內部已長期使用,證明可應用於商業環境。另外,也與 Google 合組 Kotlin 基金會 ,確保其穩健發展。從這些條件看來,Kotlin 不僅是一個開放原始碼專案,後面也有基金會及兩大國際公司撐腰,對於使用這個程式語言有很大的保障。相信這也是許多技術長、資深開發者非常在意的點。

什麼是 Kotlin Collection?

在開發者的每日工作裡,其實有很大一塊都是在做資料處理。我們抓取、截取、爬取資料,對資料做整理、過濾、轉格式,最後輸出成有系統、有意義的資訊。而在資料處理這一塊,有很大一部份的工作都是跟 Collection 有關。Collection 簡單來說,就是一群相關聯資料的集合,是個在各程式語言裡普遍常見的資料類型,從最原始的 Array,到重複與否的 List、Set,以及 Key-Value 對應的 Map 都屬於這種物件。

Kotlin 團隊深知資料處理的重要性,在標準函式庫(Standard Library)裡即提供一系列直覺、好用、全面的工具,在 API 設計上,也融合了許多 Functional Programing 的特性,若能好好運用,可以減少很多重複冗長的工作,對操作資料有很大的幫助。

筆者因舉辦 Kotlin 讀書會Kotlin 練功場 等活動,在翻查官方文件的過程中發現 Kotlin Collection 的存在。接著又因為有幾次分享 Kotlin ScriptKotlin DSL 的機會,這才發現 Collection 是各種進階知識的基石,因此決定針對這個主題好好鑽研並分享。

踏上 Kotlin Collection 的賞玩之路

本系列文章將從最基礎的 Kotlin 知識下手,包括開發環境、工具的建置、基礎語法、程式執行…等;接著會介紹各種 Collection 類別,以及標準函式庫裡常用的 API;並持續深入 Generic、Lambda、High Order Function、Scope Function 等進階設計。透過範例及重造輪子,逐步拆解整個 Collection 設計的底層。

不論您已經是 Kotlin 開發者,希望對 Collection 有更深入的認識;或是您對 Kotlin 有興趣,想透過 Collection 做為引子踏入 Kotlin 世界,都希望這系列的文章,能讓您更聰明地處理資料、寫出更好懂、更好維護的程式,輕鬆掌握 Kotlin Collection 的賞玩門道。

準備好了嗎?讓我們一起抱著探索的心,一起踏上 Kotlin Collection 的賞玩之路!

參考資料