kotlin list集合操做

總數操做符

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 })
複製代碼
相關文章
相關標籤/搜索