Kotlin—集合與它的操作符們

原文地址:http://www.2cto.com/kf/201611/567100.html

創(chuàng)建集合

List

list

Set

set

Map

Map

集合操作符

1.總數(shù)操作符

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


使用示例

結(jié)果

2.過(guò)濾操作符

通過(guò) 某個(gè)條件 來(lái)對(duì)集合中的元素進(jìn)行過(guò)濾,返回一個(gè)處理后的列表結(jié)果,但不會(huì)改變?cè)斜?br> filter —— 過(guò)濾 掉所有 滿足條件 的元素
filterNot —— 過(guò)濾所有不滿足條件的元素
filterNotNull —— 過(guò)濾NULL
take —— 返回從第一個(gè)開始的n個(gè)元素
takeLast —— 返回從最后一個(gè)開始的n個(gè)元素
takeWhile —— 返回不滿足條件的下標(biāo)前面的所有元素的集合
drop —— 返回 去掉前N個(gè)元素后 的列表
dropLastWhile —— 返回從最后一項(xiàng)起,去掉滿足條件的元素,直到不滿足條件的一項(xiàng)為止
slice —— 過(guò)濾掉 非指定下標(biāo) 的元素,即保留下標(biāo)對(duì)應(yīng)的元素過(guò)濾list中指定下標(biāo)的元素(比如這里只保留下標(biāo)為1,3,4的元素)


使用示例

結(jié)果

映射操作符

map —— 將集合中的元素通過(guò)某個(gè) 方法轉(zhuǎn)換 后的結(jié)果存到一個(gè)集合中;
mapIndexed —— 除了得到 轉(zhuǎn)換后的結(jié)果 ,還可以拿到Index(下標(biāo));
mapNotNull —— 執(zhí)行方法 轉(zhuǎn)換前過(guò)濾掉 為 NULL 的元素
flatMap —— 合并兩個(gè)集合,可以在合并的時(shí)候做些小動(dòng)作;
groupBy —— 將集合中的元素按照某個(gè)條件分組,返回Map;


使用示例

結(jié)果

順序操作符

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


使用示例

結(jié)果

生產(chǎn)操作符

這節(jié)的操作符涉及到一個(gè) Pair 的類,該類是Kotlin提供的用來(lái)處理雙元對(duì)數(shù)據(jù)的,
可以理解成Map中的一個(gè)鍵值對(duì),比如Pair(“key”,”value”) 等價(jià)于 “key” to “value”

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


使用示例

結(jié)果

元素操作符

contains —— 判斷集合中是否有指定元素,有返回true
elementAt —— 查找下標(biāo)對(duì)應(yīng)的元素,如果下標(biāo)越界會(huì)拋IndexOutOfBoundsException
elementAtOrElse —— 查找下標(biāo)對(duì)應(yīng)元素,如果越界會(huì)根據(jù)方法返回默認(rèn)值(最大下標(biāo)經(jīng)方法后的值) elementAtOrNull —— 查找下標(biāo)對(duì)應(yīng)元素,越界會(huì)返回Null
first —— 返回符合條件的第一個(gè)元素,沒(méi)有 拋NoSuchElementException
firstOrNull —— 返回符合條件的第一個(gè)元素,沒(méi)有 返回null
indexOf —— 返回指定下標(biāo)的元素,沒(méi)有 返回-1
indexOfFirst —— 返回第一個(gè)符合條件的元素下標(biāo),沒(méi)有 返回-1
indexOfLast —— 返回最后一個(gè)符合條件的元素下標(biāo),沒(méi)有 返回-1
last —— 返回符合條件的最后一個(gè)元素,沒(méi)有 拋NoSuchElementException
lastIndexOf —— 返回符合條件的最后一個(gè)元素,沒(méi)有 返回-1
lastOrNull —— 返回符合條件的最后一個(gè)元素,沒(méi)有 返回null
single —— 返回符合條件的單個(gè)元素,如有沒(méi)有符合或超過(guò)一個(gè),拋異常
singleOrNull —— 返回符合條件的單個(gè)元素,如有沒(méi)有符合或超過(guò)一個(gè),返回null


使用示例

結(jié)果
使用 JVM 上的任何現(xiàn)有庫(kù),因?yàn)橛?100% 的兼容性,包括 SAM 支持。
import io.reactivex.Flowable
import io.reactivex.schedulers.Schedulers

Flowable
    .fromCallable {
        Thread.sleep(1000) //  模仿高開銷的計(jì)算
        "Done"
    }
    .subscribeOn(Schedulers.io())
    .observeOn(Schedulers.single())
    .subscribe(::println, Throwable::printStackTrace)
無(wú)論是 JVM 還是 JavaScript 目標(biāo)平臺(tái),都可用 Kotlin 寫代碼然后部署到你想要的地方

import kotlin.browser.window

fun onLoad() {
    window.document.body!!.innerHTML += "<br/>Hello, Kotlin!"
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容