學(xué)習(xí)內(nèi)容
1.集合類
2.集合類的各種方法以及使用
A:集合類的簡介,如下圖(內(nèi)容來源:《kotlin從入門到進(jìn)階實(shí)戰(zhàn)》)

屏幕快照 2020-12-27 下午10.25.20.png

屏幕快照 2020-12-27 下午10.23.24.png

屏幕快照 2020-12-27 下午10.20.58.png

屏幕快照 2020-12-27 下午10.20.28.png
B:代碼實(shí)例
package day1
fun main(args:Array<String>){
startList()
initList()
mapAlias()
testStuFilter()
testOrder()
testDump()
}
/**
* kotlin集合
* 不僅能持有普通類型對(duì)象
*而且可以持有函數(shù)類型變量
*
* 集合類存放的都是對(duì)象的引用,而非對(duì)象本身
* Kotlin集合分為可變集合Mutable和不可變集合Immutable
*
* 常見的集合類:List,Set,Map
*
*/
/**
*
* 去重函數(shù)
*/
fun testDump(){
val dumpList = listOf(1,1,1,3,3,3,2,2,2)
println(dumpList.distinct())
}
/**
* 排序函數(shù)
*/
fun testOrder(){
val list = listOf(1,2,3,4,5,6,7)
val set = setOf(1,2,3,4,5,6)
println(list.reversed()) //倒序函數(shù)
println(set.reversed())
println(list.sorted())//升序函數(shù)
println(set.sorted())
}
/**
* 過濾函數(shù)
*
*/
data class Student(val name:String,val age:Int){
override fun toString(): String {
return "Student(name=$name,age=$age)"
}
}
fun testStuFilter(){
val slist = listOf(Student("Tim",10), Student("Tom",20), Student("Jim",30))
val last = slist.filter { it.age>18 }
println(last)
val list = listOf(1,2,34,5,6)
//使用下標(biāo)過濾
val l = list.filterIndexed { index, i -> index%2==1 && i>10 }
println(l)
}
/**
*
* 使用map函數(shù)把集合中的元素依次使用轉(zhuǎn)換函數(shù)進(jìn)行映射操作
* 元素映射后會(huì)講元素存入一個(gè)新集合,并返回這個(gè)集合
*
*/
fun mapAlias(){
val list = listOf(1,2,3,4,5,6,7)
val set = setOf(1,2,3,4)
val map = mapOf(1 to "a",2 to "b",3 to "c")
val l2 = list.map {
it*it
}
val s2 = set.map {
it+1
}
val m2 = map.map {
it.value + "$"
}
println(l2)
println(s2)
println(m2)
val l3 = listOf("a","b","c")
val l4 = l3.map { it-> listOf(it+1,it+2,it+3,it+4,it+4) }
println(l4)
println(l4.flatten()) //把嵌套的list變成一層的平鋪結(jié)構(gòu)
val m3 = m2.flatMap {
it->
listOf(it+1,it+2,it+3)
}
println(m3)
}
fun initList(){
val list = listOf(1,2,3,4,5,6,7) //創(chuàng)建不可變集合list
val multableList = mutableListOf(1,2,3,4,5,6) //創(chuàng)建可變集合
list.forEach { println(it) } //遍歷集合
//在遍歷過程中訪問集合下標(biāo)
list.forEachIndexed { index, i -> println("Index is $index,value is $i") }
println(list)
println(multableList)
val set = setOf(1,2,3,4) //創(chuàng)建不可變set
val mutableSet = mutableSetOf(1,2,3,4) //創(chuàng)建可變set
set.forEach { println(it) }
set.forEachIndexed { index, i -> println("Index is $index,value is $i") }
println(set)
println(mutableSet)
val map = mapOf(1 to "a",2 to "b",3 to "c") //創(chuàng)建不可變map
val mutableMap = mutableMapOf(1 to "A",2 to "B",3 to "C")//創(chuàng)建可變map
map.forEach { t, u -> println("Key is $t,Value is $u") }
map.entries.forEach {
println("Key is "+it.key+",value is :"+it.value)
}
println(map)
println(mutableMap)
//如果創(chuàng)建一個(gè)空的集合,需要顯式的指定變量的類型
val emptyList :List<Int> = listOf()
val emptySet : Set<Int> = setOf()
val emptyMap:Map<String,Int> = mapOf()
}
fun startList(){
var funList:List<(Int)->Boolean> = listOf(
{it->it%2==0},
{it->it%2==1}
)
val list = listOf(1,2,3,4,5,6,7,8)
println(list.filter(funList[0]))
println(list.filter(funList[1]))
}