list操作方法解析:
.any
如果至少有一個元素符合給出的判斷條件杭抠,則返回true
val list = listOf(1,2,3,4,5,6)
list.any(it % 2 == 0) // true
list.any(it > 10) //false
.all
如果全部的元素符合給出的判斷條件各淀,則返回true
list.all{it < 10} // true
list.all{it % 2 == 0} //false
.count
返回符合給出判斷條件的元素總數(shù)
list.count{it % 2 == 0}//3
在一個初始值的基礎(chǔ)上從第一項到最后一項通過一個函數(shù)累計所有的元素
list.fold(4){total,next -> total + next} // 25
與fold一樣派诬,但是順序是從最后一項到第一項
list.foldRight(4){total,next->total+next}//25
遍歷所有元素亮航,并執(zhí)行給定的操作
list.forEach{ println(it) }
與forEach静暂,但是同時可以得到元素的index
list.forEachIndexed{ index,value -> println("position $index contains a $value")}
.max
返回最大的一項搏熄,如果沒有則返回null
list.max() // 6
.maxBy
根據(jù)給定的函數(shù)返回最大的一項睡毒,如果沒有則返回null
// The element whose negative is greater
list.maxBy{-it} // 1
.min .minBy 同max maxBy(反)
.none
如果沒有任何元素與給定的函數(shù)匹配来惧,則返回true
// No elements are divisible by 7
list.none{it % 7 == 0} //true
.reduce
與fold一樣,但是沒有一個初始值演顾。通過一個函數(shù)從第一項到最后一項進(jìn)行累計
list.reduce{total,next -> total+next} //21
.reduceRight 與reduce一樣供搀,但是順序是從最后一項到第一項
.sumBy
返回所有每一項通過函數(shù)轉(zhuǎn)換之后的數(shù)據(jù)的總和
list.sumBy{ it%2 } // 3
.drop
返回包含去掉前n個元素的所有元素的列表
list.drop(4) // listOf(5,6)
.dropWhile
返回根據(jù)給定函數(shù)從第一項開始去掉指定元素的列表
list.dropWhile{it<3} // listOf(3,4,5,6)
.dropLastWhile
返回根據(jù)給定函數(shù)從最后一項開始去掉指定元素的列表
list.dropLastWhile{it>4} // listOf(1,2,3,4)
.filter
過濾所有符合給定函數(shù)條件的元素
list.filter{it%2 == 0} // listOf(2,4,6)
.filterNot
過濾所有不符合給定函數(shù)條件的元素
list.filterNot{ it % 2 == 0} // listOf(1,3,5)
.filterNotNull
過濾所有元素中不是null的元素
.slice
過濾一個list中指定index的元素
list.slice(listOf(1,3,4)) // listOf(2,4,5)
.take
返回從第一個開始的n個元素
list.take(2) // listOf(1,2)
.takeLast
返回從最后一個開始的n個元素
list.takeLast(2) // listOf(5,6)
.takeWhile
返回從第一個開始符合給定函數(shù)條件的元素
list.takeWhile{ it < 3} // listOf(1,2)
.flatMap
遍歷所有的元素隅居,為每一個創(chuàng)建一個集合,最后把所有的集合放在一個集合中
list.flatMap{listOf(it,it+1)}// listOf(1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7)
.groupBy
返回一個根據(jù)給定函數(shù)分組后的map
list.groupBy{ if(it % 2 == 0) "even" else "odd"} // {odd=[1, 3, 5], even=[2, 4, 6]}
.map
返回一個每一個元素根據(jù)給定的函數(shù)轉(zhuǎn)換所組成的list
list.map{it*2} //listOf(2,4,6,8,10,12)
.mapIndexed
返回一個每一個元素根據(jù)給定的包含元素index的函數(shù)轉(zhuǎn)換所組成的list(索引值與對應(yīng)值的函數(shù)關(guān)系)
list.mapIndexed{index,it->index*it}//listOf (0, 2, 6, 12, 20, 30)
.mapNotNull
返回一個每一個非null元素根據(jù)給定的函數(shù)轉(zhuǎn)換所組成的list
.contains
如果指定元素可以在集合中找到趁曼,則返回true
.elementAt
返回給定index對應(yīng)的元素军浆,如果index數(shù)組越界則會拋出IndexOutOfBoundsException
.elementAtOrElse
返回給定index對應(yīng)的元素,如果index數(shù)組越界則會根據(jù)給定函數(shù)返回默認(rèn)值
list.elementAtOrElse(10){2*it} //20
.elementAtOrNull
返回給定index對應(yīng)的元素挡闰,如果index數(shù)組越界則會返回null。
.first
返回符合給定函數(shù)條件的第一個元素
list.first{it%2 == 0} // 2
. firstOrNull
返回符合給定函數(shù)條件的第一個元素掰盘,如果沒有符合則返回null摄悯。
. indexOf
返回指定元素的第一個index,如果不存在愧捕,則返回-1奢驯。
list.indexOf(4) // 3
. indexOfFirst
返回第一個符合給定函數(shù)條件的元素的index,如果沒有符合則返回-1次绘。
list.indexOfFirst { it % 2 == 0 } // 1
. indexOfLast
返回最后一個符合給定函數(shù)條件的元素index瘪阁,如果沒有符合則返回-1
list.indexOfLast { it % 2 == 0 } // 5
.last
返回符合給定函數(shù)條件的最后一個元素
list.last { it % 2 == 0 } // 6
. lastIndexOf
返回指定元素的最后一個index,如果不存在邮偎,則返回-1管跺。
. lastOrNull
返回符合給定函數(shù)條件的最后一個元素,如果沒有符合則返回null禾进。
.single
返回符合給定函數(shù)的單個元素豁跑,如果沒有符合或者超過一個,則拋出異常泻云。
list.single { it % 5 == 0 } // 5
. singleOrNull
返回符合給定函數(shù)的單個元素艇拍,如果沒有符合或者超過一個,則返回null宠纯。
. merge
把兩個集合合并成一個新的卸夕,相同index的元素通過給定的函數(shù)進(jìn)行合并成新的元素作為新的集合的一個元素,返回這個新的集合婆瓜。新的集合的大小由最小的那個集合大小決定快集。
val list = listOf(1, 2, 3, 4, 5, 6)
val listRepeated = listOf(2, 2, 3, 4, 5, 5, 6)
list.merge(listRepeated) { it1, it2 -> it1 + it2 }
// 結(jié)果 listOf(3, 4, 6, 8, 10, 11)
.partition
把一個給定的集合分割成兩個,第一個集合是由原集合每一項元素匹配給定函數(shù)條件返回true的元素組成勃救,第二個集合是由原集合每一項元素匹配給定函數(shù)條件返回false的元素組成碍讨。
list.partition(it % 2 == 0) // listOf(2,4,6) listOf(1,3,5)
.plus
返回一個包含原集合和給定集合中所有元素的集合,因為函數(shù)的名字原因蒙秒,我們可以使用+操作符
val list = listOf(1,2,3,4,5,6)
Timber.e("demo ${list.plus(listOf(7,8))} and ${list+ listOf(9,10)}")
.zip
返回由pair組成的list勃黍,每個pair由兩個集合中相同index的元素組成。這個返回的list的大小由最小的那個集合決定
val list = listOf(1,2,3,4,5,6,7)
list.zip(listOf(7,8)) //[(1, 7), (2, 8)]
. unzip
從包含pair的List中生成包含List的Pair晕讲。
listOf(Pair(5, 7), Pair(6, 8)).unzip()// ([5, 6], [7, 8])
. reverse
返回一個與指定list相反順序的list
.sort
返回一個自然排序后的list
.sortBy
返回一個根據(jù)指定函數(shù)排序后的list覆获。
. sortDescending
返回一個降序排序后的List马澈。
. sortDescendingBy
返回一個根據(jù)指定函數(shù)降序排序后的list