原文地址:http://www.2cto.com/kf/201611/567100.html
創建集合
List
Set
Map
集合操作符
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.過濾操作符
通過 某個條件 來對集合中的元素進行過濾,返回一個處理后的列表結果,但不會改變原列表
filter —— 過濾 掉所有 滿足條件 的元素
filterNot —— 過濾所有不滿足條件的元素
filterNotNull —— 過濾NULL
take —— 返回從第一個開始的n個元素
takeLast —— 返回從最后一個開始的n個元素
takeWhile —— 返回不滿足條件的下標前面的所有元素的集合
drop —— 返回 去掉前N個元素后 的列表
dropLastWhile —— 返回從最后一項起,去掉滿足條件的元素,直到不滿足條件的一項為止
slice —— 過濾掉 非指定下標 的元素,即保留下標對應的元素過濾list中指定下標的元素(比如這里只保留下標為1,3,4的元素)
映射操作符
map —— 將集合中的元素通過某個 方法轉換 后的結果存到一個集合中;
mapIndexed —— 除了得到 轉換后的結果 ,還可以拿到Index(下標);
mapNotNull —— 執行方法 轉換前過濾掉 為 NULL 的元素
flatMap —— 合并兩個集合,可以在合并的時候做些小動作;
groupBy —— 將集合中的元素按照某個條件分組,返回Map;
順序操作符
reversed —— 相反順序
sorted —— 自然排序(升序)
sortedBy —— 根據方法處理結果進行自然(升序)排序
sortedDescending —— 降序排序
sortedByDescending —— 根據方法處理結果進行降序排序
生產操作符
這節的操作符涉及到一個 Pair 的類,該類是Kotlin提供的用來處理雙元對數據的,
可以理解成Map中的一個鍵值對,比如Pair(“key”,”value”) 等價于 “key” to “value”
zip —— 兩個集合按照下標組合成一個個的Pair塞到集合中返回
partition —— 根據判斷條件是否成立,拆分成兩個 Pair
plus —— 合并兩個List,可以用”+”替代
unzip —— 將包含多個Pair的List 轉換成 含List的Pair
元素操作符
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
使用 JVM 上的任何現有庫,因為有 100% 的兼容性,包括 SAM 支持。
import io.reactivex.Flowable
import io.reactivex.schedulers.Schedulers
Flowable
.fromCallable {
Thread.sleep(1000) // 模仿高開銷的計算
"Done"
}
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.single())
.subscribe(::println, Throwable::printStackTrace)
無論是 JVM 還是 JavaScript 目標平臺,都可用 Kotlin 寫代碼然后部署到你想要的地方
import kotlin.browser.window
fun onLoad() {
window.document.body!!.innerHTML += "<br/>Hello, Kotlin!"
}