val list = listOf(1, 2, 3, 4, 5, 6)
複製代碼
any數組
若是至少有一個元素符合給出的判斷條件,則返回true。bash
assertTrue(list.any { it % 2 == 0 })
assertFalse(list.any { it > 10 })
複製代碼
all函數
若是所有的元素符合給出的判斷條件,則返回true。spa
assertTrue(list.all { it < 10 })
assertFalse(list.all { it % 2 == 0 })
複製代碼
countcode
返回符合給出判斷條件的元素總數。排序
assertEquals(3, list.count { it % 2 == 0 })
複製代碼
foldip
在一個初始值的基礎上從第一項到最後一項經過一個函數累計全部的元素。element
assertEquals(25, list.fold(4) { total, next -> total + next })
複製代碼
foldRightstring
與 fold 同樣,可是順序是從最後一項到第一項。it
assertEquals(25, list.foldRight(4) { total, next -> total + next})
複製代碼
forEach
遍歷全部元素,並執行給定的操做。
list.forEach { println(it) }
複製代碼
forEachIndexed
與 forEach ,可是咱們同時能夠獲得元素的index。
list.forEachIndexed { index, value-> println("position $index contains a $value") }
複製代碼
max
返回最大的一項,若是沒有則返回null。
assertEquals(6, list.max())
複製代碼
maxBy
根據給定的函數返回最大的一項,若是沒有則返回null。
assertEquals(1, list.maxBy { -it })
複製代碼
min
返回最小的一項,若是沒有則返回null。 assertEquals(1, list.min())
minBy
根據給定的函數返回最小的一項,若是沒有則返回null。
// 負數較小的元素
assertEquals(6, list.minBy { -it })
複製代碼
none
若是沒有任何元素與給定的函數匹配,則返回true。
//沒有元素能夠被7整除
assertTrue(list.none { it % 7 == 0 })
複製代碼
reduce
與 fold 同樣,可是沒有一個初始值。經過一個函數從第一項到最後一項進行累 計。
assertEquals(21, list.reduce { total, next -> total + next })
複製代碼
reduceRight
與 reduce 同樣,可是順序是從最後一項到第一項。
assertEquals(21, list.reduceRight { total, next -> total + next})
複製代碼
sumBy
返回全部每一項經過函數轉換以後的數據的總和。
assertEquals(3, list.sumBy { it % 2 })
複製代碼
drop
返回包含去掉前n個元素的全部元素的列表。
assertEquals(listOf(5, 6), list.drop(4))
複製代碼
dropWhile
返回根據給定函數從第一項開始去掉指定元素的列表。
assertEquals(listOf(3, 4, 5, 6), list.dropWhile { it < 3 })
複製代碼
dropLastWhile
返回根據給定函數從最後一項開始去掉指定元素的列表。
assertEquals(listOf(1, 2, 3, 4), list.dropLastWhile { it > 4 })
複製代碼
filter
過濾全部符合給定函數條件的元素。
assertEquals(listOf(2, 4, 6), list.filter { it % 2 == 0 })
複製代碼
filterNot
過濾全部不符合給定函數條件的元素。
assertEquals(listOf(1, 3, 5), list.filterNot { it % 2 == 0 })
複製代碼
filterNotNull
過濾全部元素中不是null的元素。
assertEquals(listOf(1, 2, 3, 4), listWithNull.filterNotNull())
複製代碼
slice
過濾一個list中指定index的元素。
assertEquals(listOf(2, 4, 5), list.slice(listOf(1, 3, 4)))
複製代碼
take
返回從第一個開始的n個元素。
assertEquals(listOf(1, 2), list.take(2))
複製代碼
takeLast
返回從最後一個開始的n個元素
assertEquals(listOf(5, 6), list.takeLast(2))
複製代碼
takeWhile
返回從第一個開始符合給定函數條件的元素。
assertEquals(listOf(1, 2), list.takeWhile { it < 3 })
複製代碼
flatMap
遍歷全部的元素,爲每個建立一個集合,最後把全部的集合放在一個集合中。
assertEquals(listOf(1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7), list.flatMap { listOf(it, it + 1) })
複製代碼
groupBy
返回一個根據給定函數分組後的map。
assertEquals(mapOf("odd" to listOf(1, 3, 5), "even" to listOf(2,4, 6)), list.groupBy { if (it % 2 == 0) "even" else "odd" })
複製代碼
map
返回一個每個元素根據給定的函數轉換所組成的List。
assertEquals(listOf(2, 4, 6, 8, 10, 12), list.map { it * 2 })
複製代碼
mapIndexed
返回一個每個元素根據給定的包含元素index的函數轉換所組成的List。
assertEquals(listOf (0, 2, 6, 12, 20, 30), list.mapIndexed { index, it -> index * it })
複製代碼
mapNotNull
返回一個每個非null元素根據給定的函數轉換所組成的List。
assertEquals(listOf(2, 4, 6, 8), listWithNull.mapNotNull { it * 2})
複製代碼
contains
若是指定元素能夠在集合中找到,則返回true。
assertTrue(list.contains(2))
複製代碼
elementAt
返回給定index對應的元素,若是index數組越界則會拋 出 IndexOutOfBoundsException 。
assertEquals(2, list.elementAt(1))
複製代碼
elementAtOrElse
返回給定index對應的元素,若是index數組越界則會根據給定函數返回默認值。
assertEquals(20, list.elementAtOrElse(10, { 2 * it }))
複製代碼
elementAtOrNull
返回給定index對應的元素,若是index數組越界則會返回null。
assertNull(list.elementAtOrNull(10))
複製代碼
first
返回符合給定函數條件的第一個元素。
assertEquals(2, list.first { it % 2 == 0 })
複製代碼
firstOrNull
返回符合給定函數條件的第一個元素,若是沒有符合則返回null。
assertNull(list.firstOrNull { it % 7 == 0 })
複製代碼
indexOf
返回指定元素的第一個index,若是不存在,則返回 -1 。
assertEquals(3, list.indexOf(4))
複製代碼
indexOfFirst
返回第一個符合給定函數條件的元素的index,若是沒有符合則返回 -1 。
assertEquals(1, list.indexOfFirst { it % 2 == 0 })
複製代碼
indexOfLast
返回最後一個符合給定函數條件的元素的index,若是沒有符合則返回 -1 。
assertEquals(5, list.indexOfLast { it % 2 == 0 })
複製代碼
last
返回符合給定函數條件的最後一個元素。
assertEquals(6, list.last { it % 2 == 0 })
複製代碼
lastIndexOf
返回指定元素的最後一個index,若是不存在,則返回 -1 。
lastOrNull
返回符合給定函數條件的最後一個元素,若是沒有符合則返回null。
val list = listOf(1, 2, 3, 4, 5, 6)
assertNull(list.lastOrNull { it % 7 == 0 })
複製代碼
single
返回符合給定函數的單個元素,若是沒有符合或者超過一個,則拋出異常。
assertEquals(5, list.single { it % 5 == 0 })
複製代碼
singleOrNull
返回符合給定函數的單個元素,若是沒有符合或者超過一個,則返回null。
assertNull(list.singleOrNull { it % 7 == 0 })
複製代碼
merge
把兩個集合合併成一個新的,相同index的元素經過給定的函數進行合併成新的元素 做爲新的集合的一個元素,返回這個新的集合。新的集合的大小由最小的那個集合 大小決定。
val list = listOf(1, 2, 3, 4, 5, 6)
val listRepeated = listOf(2, 2, 3, 4, 5, 5, 6)
assertEquals(listOf(3, 4, 6, 8, 10, 11), list.merge(listRepeated) { it1, it2 -> it1 + it2 })
複製代碼
partition
把一個給定的集合分割成兩個,第一個集合是由原集合每一項元素匹配給定函數條 件返回 true 的元素組成,第二個集合是由原集合每一項元素匹配給定函數條件返 回 false 的元素組成。
assertEquals(Pair(listOf(2, 4, 6), listOf(1, 3, 5)), list.partition { it % 2 == 0 })
複製代碼
plus
返回一個包含原集合和給定集合中全部元素的集合,由於函數的名字緣由,咱們可 以使用 + 操做符。
assertEquals(listOf(1, 2, 3, 4, 5, 6, 7, 8), list + listOf(7, 8))
複製代碼
zip
返回由 pair 組成的List,每一個 pair 由兩個集合中相同index的元素組成。這個返 回的List的大小由最小的那個集合決定。
assertEquals(listOf(Pair(1, 7), Pair(2, 8)), list.zip(listOf(7, 8)))
複製代碼
unzip
從包含pair的List中生成包含List的Pair。
assertEquals(Pair(listOf(5, 6), listOf(7, 8)), listOf(Pair(5, 7), Pair(6, 8)).unzip())
複製代碼
reverse
返回一個與指定list相反順序的list。
val unsortedList = listOf(3, 2, 7, 5)
assertEquals(listOf(5, 7, 2, 3), unsortedList.reverse())
複製代碼
sort
返回一個天然排序後的list。
assertEquals(listOf(2, 3, 5, 7), unsortedList.sort())
複製代碼
sortBy
返回一個根據指定函數排序後的list。
assertEquals(listOf(3, 7, 2, 5), unsortedList.sortBy { it % 3 })
複製代碼
sortDescending
返回一個降序排序後的List。
assertEquals(listOf(7, 5, 3, 2), unsortedList.sortDescending())
複製代碼
sortDescendingBy
返回一個根據指定函數降序排序後的list。
assertEquals(listOf(2, 5, 7, 3), unsortedList.sortDescendingBy {it % 3 })
複製代碼