我的Kotlin學(xué)習(xí)之旅-day7-2020-12-27

學(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]))
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容