頻道欄目
首頁 > 資訊 > 其他 > 正文

Kotlin — 3.集合與它的操作符們

16-11-15        來源:[db:作者]  
收藏   我要投稿

1.Kotlin中的集合介紹

好的,本節我們繼續來搞Kotlin,這節要搞的是: Kotlin中的集合與它的操作符們集合在我們實際開發中用的還是比較頻繁的,Kotlin中的集合不同于Java中的集合,Kotlin中的集合根據“是否可變”,分為兩派:可變集合不可變集合,而后者是在前者的前面加上了 Mutable

列表List/MutableList; Set/MutableSet; 映射Map/MutableMap; Collection/MutableCollection; 迭代器Iterable/MutableIterable;

關于可變不可變,其實看看這些類提供的方法就知道了(提供的讀寫相關的方法)我們可以打開kotlin-runtime-sources.jar包中的kotlin包,里面有個Collections.kt的文件,這里不對方法進行講解,基本都是見名知意,打開這個文件后,點擊AS左側的Structure視圖,來看看都有些什么?

首先是:Iterable接口,兩個接口中都只有一個iterator()方法:

改方法返回一個Iterator,我們到Iterator.kt里看看,定義了四個接口,以及對應的方法,這就是當我們對集合進行循環迭代遍歷時可供調用的一些方法!

接著看回Collections.kt,可以看到 CollectionMutableCollection給我們提供的方法:

再接著是實現了Collection接口的 ListSet,除了重寫Collection中的方法外還新增了一些方法:

Map 則是:,然后提供的方法與參數如下:

整個文件的大概結構就是這樣,方法也不細講了,都是見名知意的!


2.創建集合


List

Set

Map

這的鍵值對用 to 關鍵字,key to value!


3.強勢的集合操作符們


Kotlin中關于集合的操作符有六類:

總數操作符 過濾操作符 映射操作符 順序操作符 生產操作符 元素操作符

下面我們一一來對這些操作符進行講解!

1)總數操作符


any —— 判斷集合中 是否有滿足條件 的元素; all —— 判斷集合中的元素 是否都滿足條件; none —— 判斷集合中是否 都不滿足條件,是則返回true; count —— 查詢集合中 滿足條件元素個數; reduce —— 從 第一項到最后一項進行累計 ; reduceRight —— 從 最后一下到第一項進行累計; fold —— 與reduce類似,不過有初始值,而不是從0開始累計; foldRight —— 和reduceRight類似,有初始值,不是從0開始累計; forEach —— 循環遍歷元素,元素是it,可對每個元素進行相關操作; forEachIndexed —— 循環遍歷元素,同時得到元素index(下標); max —— 查詢最大的元素,如果沒有則返回null; maxBy —— 獲取方法處理后返回結果最大值對應的那個元素的初始值,如果沒有則返回null; min —— 查詢最小的元素,如果沒有則返回null; minBy —— 獲取方法處理后返回結果最小值對應那個元素的初始值,如果沒有則返回null; sumBy —— 獲取 方法處理后返回結果值總和; dropWhile —— 返回從第一項起,去掉滿足條件的元素,直到不滿足條件的一項為止

使用示例

結果


2)過濾操作符

見名知意,通過 某個條件 來對集合中的元素進行過濾,取其精華去其糟粕~
PS:過濾后會返回一個處理后的列表結果,但不會改變原列表。!


filter —— 過濾 掉所有 滿足條件 的元素 filterNot —— 過濾所有不滿足條件的元素 filterNotNull —— 過濾NULL take —— 返回從第一個開始的n個元素 takeLast —— 返回從最后一個開始的n個元素 takeWhile —— 返回不滿足條件的下標前面所有元素的集合 drop —— 返回 去掉前N個元素后 的列表 dropLastWhile —— 返回從最后一項起,去掉滿足條件的元素,直到不滿足條件的一項為止 slice —— 過濾掉 非指定下標 的元素,即保留下標對應的元素過濾list中
指定下標的元素(比如這里只保留下標為1,3,4的元素)

使用示例

結果


3)映射操作符

這里的話,因為操作符只有五個,就不一個個分開了,直接解釋一波后,
貼代碼和運行結果~


map —— 將集合中的元素通過某個 方法轉換 后的結果存到一個集合中; mapIndexed —— 除了得到 轉換后的結果 ,還可以拿到Index(下標); mapNotNull —— 執行方法 轉換前過濾掉NULL 的元素 flatMap —— 合并兩個集合,可以在合并的時候做些小動作; groupBy —— 將集合中的元素按照某個條件分組,返回Map;

使用示例

結果


4)順序操作符

同樣,操作符也不多,只有五個,都是和元素排序相關的!


reversed —— 相反順序 sorted —— 自然排序(升序) sortedBy —— 根據方法處理結果進行自然(升序)排序 sortedDescending —— 降序排序 sortedByDescending —— 根據方法處理結果進行降序排序

使用示例

結果


5)生產操作符

生產操作符只有四個,不是五個,看到網上相關的都說有五個,還有一個是:merge,
作用是:把兩個集合,按照相同下標,合成新的元素,合成的集合大小由最小的集合決定!
然而,這個方法在Kotlin 1.0 Beta 2后的版本,就棄用了這個操作符,具體可見:傳送門
當然有替代方案,可以使用 zip 操作符來實現這個功能!示例代碼會給出~
另外,這節的操作符涉及到一個 Pair 的類,該類是Kotlin提供的用來處理雙元對數據的,
可以理解成Map中的一個鍵值對,比如Pair(“key”,”value”) 等價于 “key” to “value”


zip —— 兩個集合按照下標組合成一個個的Pair塞到集合中返回 partition —— 根據判斷條件是否成立,拆分成兩個 Pair plus —— 合并兩個List,可以用”+”替代 unzip —— 將包含多個Pair的List 轉換成 含List的Pair

使用示例

結果


6)元素操作符

contains —— 判斷集合中是否有指定元素,有返回true elementAt —— 查找下標對應的元素,如果下標越界會拋IndexOutOfBoundsException elementAtOrElse —— 查找下標對應元素,如果越界會根據方法返回默認值(最大下標經方法后的值) elementAtOrNull —— 查找下標對應元素,越界會返回Null first —— 返回符合條件的第一個元素,沒有 拋NoSuchElementException firstOrNull —— 返回符合條件的第一個元素,沒有 返回null indexOf —— 返回指定下標的元素,沒有 返回-1 indexOfFirst —— 返回第一個符合條件的元素下標,沒有 返回-1 indexOfLast —— 返回最后一個符合條件的元素下標,沒有 返回-1 last —— 返回符合條件的最后一個元素,沒有 拋NoSuchElementException lastIndexOf —— 返回符合條件的最后一個元素,沒有 返回-1 lastOrNull —— 返回符合條件的最后一個元素,沒有 返回null single —— 返回符合條件的單個元素,如有沒有符合或超過一個,拋異常 singleOrNull —— 返回符合條件的單個元素,如有沒有符合或超過一個,返回null

使用示例

結果


本節小結

本節對Kotlin中的集合與相關操作符進行了詳細的講解,此文經過多次排版,我覺得
先描述操作符 -> 使用示例 -> 運行結果,這樣應該是最清晰的了,
希望能幫助你更快掌握這些操作符!當然還是那句話:
不要去死記操作符,用到的時候再查
可以把本文收藏了或者點個喜歡,想查什么就查什么!

相關TAG標簽
上一篇:Android啟動過程詳解(3)——Zygote
下一篇:自定義圓形ImageView 實現思路 -- Android 學習之路
相關文章
圖文推薦

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

美女MM131爽爽爽毛片