美文网首页
14. 集合类

14. 集合类

作者: 努力生活的西鱼 | 来源:发表于2021-11-01 10:24 被阅读0次
    1. Kotlin的集合类

    Kotlin的集合类分为可变集合类和不可变集合类

    2. 常用的三种集合类

    主要有三种: List(列表),Set(集合),Map(映射)

    • List容器中的元素以线性方式存储,元素是有序的排列,可以存放重复对象。
    • Set集合中的元素无序且不能重复
    • Map持有的是一个键值对(K - V)对象
    3. 创建集合类

    List列表分为只读不可变的List和可变的MutableList

    val list = listOf<Int>(1,2,3,4,5,6);
    var mutableList = mutableListOf<Int>();
    

    Set集也分为不可变set和可变MutableSet

    val set = setOf<Int>(1,2,3,4,5,6);
    var mutableSet = mutableSetOf<Int>();
    

    Map也分为只读Map和可变MutableMap

    val map = mapOf<Int,String>(1 to "a",2 to "b",3 to "c");
    val mutableMap = mutableMapOf<Int,String>();
    
    4. 遍历集合中的元素
    4.1 遍历元素

    使用forEach()函数遍历

    // List中的forEach
    list.forEach {
        println(it); // 1 2 3 4 5 6
    }
    
    // Set中的forEach
    set.forEach {
        println(it); // 1 2 3 4 5 6
    }
    
    // map中的forEach
    map.forEach {
        println("${it.key} - ${it.value}"); // 1 - a 2 - b 3 - c
    }
    

    当我们在遍历元素的同时,想获取元素的下标,可以使用forEachIndexed()函数

    list.forEachIndexed { index, value ->
        println("index = $index, value = $value"); // index = 0, value = 1 ...
    }
    
    set.forEachIndexed { index, value ->
        println("index = $index,value = $value"); // index = 0, value = 1 ...
    }
    
    5. 映射函数

    使用map函数,可以把集合中的元素,依次使用给定的转换函数,进行映射操作,元素映射之后的新值,会存入一个新的集合中,并返回这个新的集合

    private fun listMap(): Unit {
        val numberList = listOf(1,2,3,4,5,6);
        val newNumberList = numberList.map { it -> it + 1 }
        println(newNumberList); // [2, 3, 4, 5, 6, 7]
    }
    

    flatten()函数,可以把内层的嵌套List,平铺称为1层

    // 传入List
    val doubleList = numberList.map { it -> listOf(it + 2,it + 3,it + 4) }
    println(doubleList); // [[3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9], [8, 9, 10]]
    println(doubleList.flatten()); // [3, 4, 5, 4, 5, 6, 5, 6, 7, 6, 7, 8, 7, 8, 9, 8, 9, 10]
    

    flatMap()函数是map函数和flatten的集合

    // flatMap
    val flatMapList = numberList.flatMap { it -> listOf(it * 2, it * 3, it * 4) }
    println(flatMapList); //[2, 3, 4, 4, 6, 8, 6, 9, 12, 8, 12, 16, 10, 15, 20, 12, 18, 24]
    
    6. 过滤函数

    filter()函数

    val studentList = listOf(
        Student(1, "Jack", 18, 86),
        Student(2, "Rose", 23, 75),
        Student(3, "Alice", 25, 89)
    );
    
    val studentList1 = studentList.filter { it.age < 22 };
    println(studentList1); // [Student(id = 1, name = Jack, age = 18, score = 86)]
    

    filterIndexed()函数

    val list = listOf<Int>(0,1,2,3,4,5,6);
    val list1 = list.filterIndexed { index, it -> index % 2 == 0 && it > 3 }
    println(list1); // [4, 6]
    
    7. 排序函数

    今天来聊下,List和Set中常用的两个排序函数。

    reversed()

    reversed()函数,是一个倒序函数,注意不是降序

    val list = listOf(7, 5, 9, 8, 3, 1);
    
    var revertList = list.reversed();
    println(revertList); // [1, 3, 8, 9, 5, 7]
    
    sorted()

    sorted()函数,是一个升序函数,是从小往大排列的~

    val list = listOf(7, 5, 9, 8, 3, 1);
    
    val sortList = list.sorted();
    println(sortList); // [1, 3, 5, 7, 8, 9]
    
    8. 去重函数

    如果想对一个一个列表进行去重,可以使用distinct()函数

    val list = listOf(1, 2, 2, 3, 3, 3, 4, 4, 4, 4);
    val distinctList = list.distinct();
    println(distinctList); // [1, 2, 3, 4]
    

    相关文章

      网友评论

          本文标题:14. 集合类

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