kotlin集合--基础篇

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// Intprintln("num1:$num1 num2:$num2 num3:$num3 int1:$int1")println(abs(num1))println(num1.toInt()) // 转换成IntprintType(num1) printType(num2) printType(num3) printType(int1)

}
fun printType(param: Any) {
println("{param::class.simpleName} type")
}
/**
  • 数组
    */
    fun arrayType() {
    // arrayOf
    val array: Array = arrayOf(1, 2, 3)
    // ArrayOfNulls
    val array1 = arrayOfNulls(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("one", "two", "one")
    println(stringList)
    val stringSet = setOf("one", "two", "one")
    println(stringSet)
// 可变集合 val numbers = mutableListOf(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 不是 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("one", "two", "three") val stringList2 = listOf("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()
    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集合--基础篇】}

    推荐阅读