Kotlin 集合小記

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弄息,隨后出現(xiàn)的幾起案子痊班,更是在濱河造成了極大的恐慌,老刑警劉巖摹量,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涤伐,死亡現(xiàn)場離奇詭異,居然都是意外死亡缨称,警方通過查閱死者的電腦和手機(jī)凝果,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睦尽,“玉大人器净,你說我怎么就攤上這事〉狈玻” “怎么了山害?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長沿量。 經(jīng)常有香客問我浪慌,道長,這世上最難降的妖魔是什么欧瘪? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任眷射,我火速辦了婚禮,結(jié)果婚禮上佛掖,老公的妹妹穿的比我還像新娘妖碉。我一直安慰自己,他們只是感情好芥被,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布欧宜。 她就那樣靜靜地躺著,像睡著了一般拴魄。 火紅的嫁衣襯著肌膚如雪冗茸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天匹中,我揣著相機(jī)與錄音夏漱,去河邊找鬼。 笑死顶捷,一個胖子當(dāng)著我的面吹牛挂绰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播服赎,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼葵蒂,長吁一口氣:“原來是場噩夢啊……” “哼交播!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起践付,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤秦士,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后永高,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隧土,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年命爬,在試婚紗的時候發(fā)現(xiàn)自己被綠了次洼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡遇骑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出揖曾,到底是詐尸還是另有隱情落萎,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布炭剪,位于F島的核電站练链,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏奴拦。R本人自食惡果不足惜媒鼓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望错妖。 院中可真熱鬧绿鸣,春花似錦、人聲如沸暂氯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痴施。三九已至擎厢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辣吃,已是汗流浹背动遭。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留神得,地道東北人厘惦。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像循头,于是被迫代替她去往敵國和親绵估。 傳聞我的和親對象是個殘疾皇子炎疆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 原文鏈接:https://github.com/EasyKotlin 本章將介紹Kotlin標(biāo)準(zhǔn)庫中的集合類,我們...
    JackChen1024閱讀 2,141評論 1 1
  • 集合是開發(fā)中非常常用的知識国裳,比如操作各種數(shù)據(jù)集形入,各種算法,保存網(wǎng)絡(luò)請求結(jié)果缝左,作為Adapter數(shù)據(jù)集亿遂,如果你不會集...
    Knight_Davion閱讀 16,131評論 1 22
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,793評論 0 38
  • [TOC] 前言 kotlin的集合分為不可變集合和可變集合 Kotlin 的 List<out T> 只提供只讀...
    孤調(diào)閱讀 520評論 0 1
  • 那一天,喜歡上了一首歌渺杉,她好像你蛇数。 那一天,夢醒了是越,只是夢里依然沒有你耳舅。 那一天,我開始學(xué)著你的樣子微笑倚评,可惜有些...
    三葉草耶閱讀 354評論 4 3