美文网首页
kotlin集合--基础篇

kotlin集合--基础篇

作者: 黑狼_佩恩 | 来源:发表于2021-04-01 10:35 被阅读0次

https://blog.csdn.net/weixin_38478780/article/details/108658324

fun main() {
    println("---main---")
    //baseType()
    arrayType()
    //collectionType()
    //collectionSort()
}

fun baseType() {
    val num1 = -1.67 // double
    val num2 = 2    // Int

    val num3 = 2f   // Float
    val int1 = 3    // Int

    println("num1:$num1 num2:$num2 num3:$num3 int1:$int1")

    println(abs(num1))

    println(num1.toInt()) // 转换成Int

    printType(num1)
    printType(num2)
    printType(num3)
    printType(int1)
}

fun printType(param: Any) {
    println("$param is ${param::class.simpleName} type")
}
/**
 * 数组
 */
fun arrayType() {
    // arrayOf
    val array: Array<Int> = arrayOf(1, 2, 3)

    // ArrayOfNulls
    val array1 = arrayOfNulls<Int>(3)
    array1[0] = 4
    array1[1] = 5
    array1[2] = 6

    // 通过Array的构造函数
    val array2 = Array(5) { i -> (i * i).toString() }

    // 原生类型数组
    val x = intArrayOf(1, 2, 3)
    println("x[0] + x[1] = ${x[0] + x[1]}")

    // 大小为5、值为 [0, 0, 0, 0, 0] 的整型数组
    val array3: IntArray = IntArray(5)

    // 例如:用常量初始化数组中的值
    // 大小为5、值为 [42, 42, 42, 42, 42] 的整型数组
    val array4 = IntArray(5) { 42 }

    // 例如:使用 lambda 表达式初始化数组中的值
    // 大小为5、值为 [0, 1, 2, 3, 4] 的整型数组 (值初始化为其索引值)
    val array5 = IntArray(5) { it * 1 }
    println(array5[4])


    /***遍历数组的5种方式***/
    // 数组遍历
    for (item in array) {
        println(item)
    }

    // 带索引遍历数组
    for (i in array.indices) {
        println("$i -> ${array[i]}")
    }

    // 带索引遍历数组2
    for ((index, item) in array.withIndex()) {
        println("$index -> $item")
    }

    //forEach 遍历数组
    array.forEach { println(it) }

    //forEach 增强版
    array.forEachIndexed { index, item ->
        println("$index -> $item")
    }
}
/**
 * 集合
 */
fun collectionType() {
    //不可变集合
    val stringList = listOf<String>("one", "two", "one")
    println(stringList)

    val stringSet = setOf<String>("one", "two", "one")
    println(stringSet)


    // 可变集合
    val numbers = mutableListOf<Int>(1, 2, 3, 4)
    numbers.add(5)
    numbers.removeAt(1)
    numbers[0] = 0
    println(numbers)

    // 自动过滤重复元素
    val hello = mutableSetOf("H", "e", "l", "l", "o")
    hello.remove("o")
    println(hello)

    // 集合的加减操作
    hello += setOf("w", "o", "r", "l", "d")
    println(hello)

    /** Map<k, v> 不是 Collection 接口的继承者:但是它也是 Kotlin 的一种集合类型 **/
    val numberMap = mapOf("key1" to 1, "key2" to 2, "key3" to 3, "key4" to 4, "key5" to 5)
    println("All keys:${numberMap.keys}")
    println("All valus:${numberMap.values}")

    // 判断 key 是否在map里面
    if ("key2" in numberMap) println("Value by key2: ${numberMap["key2"]}")
    // 判断 value 是否在map里面
    if (1 in numberMap.values) println("1 is in the map")
    if (numberMap.containsValue(1)) println("1 is in the map")


    /**
     * Q1、两个具有相同键值对,单顺序不同的Map相等吗?为什么?
     *
     * 无论键值对的顺序如何,包含相同键值对的两个 Map 是相等的
     */
    val anotherMap = mapOf("key2" to 2, "key1" to 1, "key3" to 3, "key4" to 4, "key5" to 5)
    println("anotherMap == numberMap:${anotherMap == numberMap}")

    /**
     * Q2、两个具有相同元素,但单顺序不同的list相等吗?为什么?
     *
     *  不相等  源码调试
     */
    val stringList1 = listOf<String>("one", "two", "three")
    val stringList2 = listOf<String>("one", "two", "three")
    println("stringList1 == stringList2:${stringList1 == stringList2}")
    stringList.equals(stringList2)
}

/**
 * 集合排序
 */
fun collectionSort() {
    val number3 = mutableListOf(1, 2, 3, 4)
    // 随机排序
    number3.shuffle()
    println(number3)
    // 从小到大
    number3.sort()
    println(number3)
    // 从大到小
    number3.sortDescending()
    println(number3)

    // 条件排序
    data class Language(var name: String, var score: Int)

    val languageList = mutableListOf<Language>()
    languageList.add(Language("Java", 80))
    languageList.add(Language("Kotlin", 90))
    languageList.add(Language("Dart", 99))
    languageList.add(Language("C", 80))
    // 使用sortBy进行排序,适合单条件排序  分数从小到大排序
    languageList.sortBy {
        it.score
    }
    println(languageList)


    // 使用sortWith进行排序,适合多条件排序
    languageList.sortWith(compareBy({ it.score }, { it.name }))
    println(languageList)
}

相关文章

  • kotlin集合--基础篇

    https://blog.csdn.net/weixin_38478780/article/details/108...

  • Kotlin 进阶之路 目录

    Kotlin 进阶之路 目录 Kotlin 进阶之路1 基础语法Kotlin 进阶之路2 集合类型Kotlin 进...

  • Android Kotlin(3)之《基本类型与集合》

    Android Kotlin第三篇,这篇我们一起来了解下Kotlin基础类型与集合,也许我有的地方没有写好,也欢迎...

  • kotlin入门潜修系列教程

    kotlin入门潜修之开门篇—kotlin是什么? kotlin入门潜修之基础篇—基础语法kotlin入门潜修之基...

  • Kotlin基础(集合)

    适合有java基础的,获取kotlin基础知识/语法等,Kotlin精讲-黑马程序员(原创)的学习笔记。 1. 区...

  • Kotlin第三章小结

    Kotlin没有定义自己的集合类,而是在Java集合类的基础上提供了更丰富的api Kotlin可以给函数参数定义...

  • 函数的定义和调用

    3.1 创建集合 kotlin没有采用自己的集合类,而是采用的标准的java集合类。在java集合类的基础上新增了...

  • Kotlin系列——集合操作

    前言 今天给大家带来Kotlin系列的第四篇文章,集合操作,在Kotlin中,集合主要有以下几种 Iterable...

  • Kotlin基础--集合基础总结

    在Android日常开发中,数组和集合这两个数据容器是必不可少的。在Kotlin中集合同样是有三大类:List、S...

  • Kotlin学习之可变与不可变集合

    Kotlin学习之可变与不可变集合 一、可变集合与不可变集合有哪些? Kotlin集合框架在kotlin.coll...

网友评论

      本文标题:kotlin集合--基础篇

      本文链接:https://www.haomeiwen.com/subject/dyxtkltx.html