天天看點

Kotlin_進階特性

Kotlin

文章目錄

  • ​​Kotlin​​
  • ​​1.過濾​​
  • ​​2.排序​​
  • ​​3.分組​​
  • ​​4.最值​​
  • ​​5.去重​​

進階特性為在java的基礎上kotlin對list的操作

1.過濾

find為找到第一個

fiter為過濾全部的

filterTo為過濾到mu中,過濾兩個張開頭的list

fun main(args: Array) {
    var list1 = listOf("張三","裡斯","張思")
    var list2 = listOf("賬務","張武")

    var list3 = list1.find { it
        it.startsWith("張")
    }
    println(list3)

    var list4 = list1.filter{it
        it.startsWith("張")
    }
    println(list4)

    var mu = mutableListOf()
    list1.filterTo(mu,{it
        it.startsWith("張")
    })
    list2.filterTo(mu,{it
        it.startsWith("張")
    })
    println(mu)

    //index為偶數的
    val list5 = list1.filterIndexed{index:Int,s:String->
        index%2==0
    }
    println(list5)
}
      

結果

張三

[張三, 張思]

[張三, 張思, 張武]

[張三, 張思]

2.排序

根據ASCII排序

也可以根據自定義去排序

fun main(args: Array) {
    var list = listOf("a","b","c")
    println(list.sorted())

    println(list.sortedDescending())

    var list1 = listOf(person1("林",11), person1("王",15), person1("陳",13))
    var list2 = list1.sortedBy { it.age }
    println(list2)
    var list3 = list1.sortedByDescending { it.age }
    println(list3)
}
data class person1(var name:String,var age:Int)
      

結果

[a, b, c]

[c, b, a]

[person1(name=林, age=11), person1(name=陳, age=13), person1(name=王, age=15)]

[person1(name=王, age=15), person1(name=陳, age=13), person1(name=林, age=11)]

3.分組

fun main(args: Array) {
    var list = listOf("王五","張三","張思","李四")
    var map = list.groupBy { it
        var fist = it.substring(0,1)
        when(fist){
            "張"->"張"
            "李"->"李"
            else->"其他"
        }
    }
    println(map)
}
      

結果

{其他=[王五], 張=[張三, 張思], 李=[李四]}

4.最值

可以自定義

也可以按照ASCII去取

fun main(args: Array) {
    val list = listOf("a","b","z")
    println(list.max())
    println(list.min())

    var list1 = listOf(person("林",11), person("王",15), person("陳",13))
    var list2 = list1.maxBy { it.age }
    var list3 = list1.sortedBy { it.age }
    println(list3)
    println(list2)
}
data class person(var name:String,var age:Int)
      

結果

z

a

[person(name=林, age=11), person(name=陳, age=13), person(name=王, age=15)]

person(name=王, age=15)

5.去重

fun main(args: Array) {
    var list = listOf("張三","張三","裡斯","張思")
    var set = list.toSet()
    println(set)

    println(list.distinct())

    //取同性
    val list2 = list.distinctBy {
        it.substring(0,1)
    }
    println(list2)
}