Kotlin中常見的List使用示例教程
Kotlin是一種新興的編程語言,它在java基礎(chǔ)上添加了許多新的特征,使得它更加方便和強大,list是kotlin中一個非常常見的數(shù)據(jù)類型,它可以用來存儲一組有序的數(shù)據(jù),下面看下Kotlin中常見的List使用。
1.filter
filter 就像其本意一樣,可以通過 filter 對 Kotlin list 進行過濾。
fun main()
{
val numbers = listOf(1, -2, 3, -4, 5, -6)
val positives = numbers.filter { x -> x > 0 }
val negatives = numbers.filter { it < 0 } // 這里我們可以使用 it
println("positive values: ${positives}") // 打印 positive values: [1, 3, 5]
println("negative values: ${negatives}") // 打印 positive values: [-2, -4, -6]
}2.map
map擴展函數(shù)能使我們能夠變化應(yīng)用于集合中的所有元素
fun main()
{
val numbers = listOf(1, -2, 3, -4, 5, -6)
val doubled = numbers.map { x -> x * 2 }
val tripled = numbers.map { it * 3 }
println("doubled values: ${doubled}") // 打印 doubled values: [2, -4, 6, -8, 10, -12]
println("tripled values: ${tripled}") // 打印 tripled values: [3, -6, 9, -12, 15, -18]
}3.count
count函數(shù)返回集合中的元素總數(shù)或與給定條件匹配的元素數(shù)。
fun main()
{
val numbers = listOf(1, -2, 3, -4, 5, -6)
val totalCount = numbers.count() //集合中的元素總數(shù)
val evenCount = numbers.count { it % 2 == 0 } //與給定條件匹配的元素數(shù)
println("totalCount: ${totalCount}") // 打印 totalCount: 6
println("evenCount: ${evenCount}") // 打印 evenCount: 3
}4.first,last
返回列表中第一個或最后一個元素的值。
fun main()
{
val numbers = listOf(1, -2, 3, -4, 5, -6)
val first = numbers.first()
val last = numbers.last()
val firstEven = numbers.first { it % 2 == 0 }
val lastOdd = numbers.last { it % 2 != 0 }
println("first element: ${first}") // 打印 first element: 1
println("last element: ${last}") // 打印 last element: -6
println("first Even element: ${firstEven}") // first Even element: -2
println("last Odd element: ${lastOdd}") // last Odd element: 5
}5.any,all,none
這些函數(shù)檢查是否存在與給定條件匹配的集合元素,并返回布爾值。
any:集合中存有一個或多個元素符合條件時返回true,否則返回false
all:當(dāng)且僅當(dāng)該集合中所有元素都滿足條件時,返回true;否則都返回false。
node:如果集合中沒有符合匹配條件的元素,返回true,否則返回false
fun main()
{
val numbers = listOf(1, -2, 3, -4, 5, -6)
val anyNegative = numbers.any { it < 0 }
val anyGT6 = numbers.any { it > 6 }
val allEven = numbers.all { it % 2 == 0 }
val allLess6 = numbers.all { it < 6 }
val allEven = numbers.none { it % 2 == 1 }
val allLess6 = numbers.none { it > 6 }
println("any negative elements: ${anyNegative}") // 打印 any negative elements: true
println("any elements larger than six: ${anyGT6}") // any elements larger than six: false
println("是否所有元素都是雙數(shù):${allEven}") // 是否所有元素都是雙數(shù):false
println("是否所有元素都小于6: ${allLess6}") // 是否所有元素都小于6: true
}6.find,findLast
find和findLast函數(shù)返回與給定條件匹配的第一個或最后一個集合元素。如果沒有這樣的元素,函數(shù)將返回null
fun main(string: Array<String>) {
val test = listOf("one", "two", "three", "four", "five", "six")
//從開頭查詢,字符長度大3的元素
println(test.find {
it.length > 2
})
println(test.findLast { it.length > 3 })
}
//輸出
one
five7.indexOf()和lastIndexOf()查找元素下標(biāo)
在列表中,都可以使用indexOf() 或者lastIndexOf() 查詢到元素在集合中的位置。
如果集合中沒有該對象,則返回-1。
fun main(string: Array<String>) {
val numbers = listOf(1, 2, 3, 4, 2, 5)
println(numbers.indexOf(2))
println(numbers.lastIndexOf(2))
}
//輸出
1
4還有一種擴展方法
- indexOfFirst()返回與關(guān)鍵字匹配的第一個元素的索引,如果沒有此類元素,則返回 -1。
- indexOfLast() 返回與謂詞匹配的最后一個元素的索引,如果沒有此類元素,則返回 -1。
fun main(string: Array<String>) {
val numbers = mutableListOf("A", "B", "B", "C", "C", "A", "C")
println(numbers.indexOfFirst { it == "A" })
println(numbers.indexOfLast { it == "A" })
}
//輸出
0
58.Slice切片
該函數(shù)返回具有給定索引的集合元素列表。
fun main(string: Array<String>) {
//我們得到一個字符串?dāng)?shù)組
val test = listOf("A", "B", "C", "D", "E", "F", "G")
val temp = test.slice(listOf(1,4,3))
println(temp)
}
//輸出
[B, E, D]我們注意到,截取后的集合,也是按照我們傳入的下標(biāo)順序進行獲取的。
索引既可以是作為集合的形式傳入,也可以是[區(qū)間]
fun main(string: Array<String>) {
//我們得到一個字符串?dāng)?shù)組
val test = listOf("A", "B", "C", "D", "E", "F", "G")
//截取 下標(biāo)從2 到4的 集合集
val temp = test.slice(2..4)
println(temp)
//截取 步長為2的 指定區(qū)間的參數(shù)
val temp1 = test.slice(2..4 step 2)
println(temp1)
}
//輸出
[C, D, E]
[C, E]9.Take()和drop()獲取指定長度
slice在使用的過程中可能會越界。
而take 和drop截取的時候不會產(chǎn)生越界的問題。
- take :從頭開始獲取指定長度的元素,如果原始集合長度不夠,則返回整個集合對象。
- drop:從指引位置開始截取到集合尾部。
fun main(string: Array<String>) {
//我們得到一個字符串?dāng)?shù)組
val test = listOf("A", "B", "C", "D", "E", "F", "G")
//從頭截取
val temp = test.take(5)
println(temp)
//從下標(biāo)2的元素開始, 包括下標(biāo)2的元素本身
val temp1 = test.drop(2)
println(temp1)
}
//輸出
[A, B, C, D, E]
[C, D, E, F, G]到此這篇關(guān)于Kotlin中常見的List使用的文章就介紹到這了,更多相關(guān)Kotlin List使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程
這篇文章主要介紹了詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
泛談Java中的不可變數(shù)據(jù)結(jié)構(gòu)
開發(fā)人員通常認(rèn)為擁有final引用,或者val在Kotlin或Scala中,足以使對象不可變。這篇博客文章深入研究了不可變引用和不可變數(shù)據(jù)結(jié)構(gòu),下面小編來和大家一起學(xué)習(xí)它2019-05-05
使用Java開發(fā)實現(xiàn)OAuth安全認(rèn)證的應(yīng)用
這篇文章主要介紹了使用Java開發(fā)實現(xiàn)OAuth安全認(rèn)證的應(yīng)用的方法,OAuth安全認(rèn)證經(jīng)常出現(xiàn)于社交網(wǎng)絡(luò)API應(yīng)用的相關(guān)開發(fā)中,需要的朋友可以參考下2015-11-11

