美文网首页Kotlin
List、Set、Map

List、Set、Map

作者: 码农修行之路 | 来源:发表于2020-11-24 23:46 被阅读0次

    集合概述

    集合的引入,在程序中,我们可以通过数组来保存多个对象,数组的程度也就是个数是确定的,如果我们无法确定需要保存的对象的多少,那么数组就不能满足存储的要求,此时,KT引入了集合,集合可以存储任意类型的对象,并且长度可变
    定义:集合类似一个容器,用于存储一系列的对象,这些对象可以是任意的数据类型,并且长度可变

    • 集合按照其存储结构可以分为:单列集合(Collection)、双列集合(Map)
    单列集合:
    单列集合.png
    1. List 特点:有序 可重复 线性方式存储 元素的存和取顺序一致 可通过索引来访问集合中的元素
      分为可变集合(MutableList)和不可变集合(List)
      可变集合(MutableList):可以对集合中的元素进行增删操作
      不可变集合(List):对集合中的元素仅提供只读操作
    fun main() {
        // 不可变 只读
        var list = listOf(22, 33, 33, 44, 44)
        println(list.size)// 集合大小
        println(list.get(2))// 下标为2的元素
        println(list.indexOf(33))// 元素为33的下标
        println(list.lastIndexOf(44))// 最后一个元素为44的下标
        println(list.subList(1, 3))// 截取集合中索引1-3的元素 不包含3
        // 集合元素遍历
        list.forEach { value ->
            println("list 元素$value")
        }
        // 带有下标的集合元素遍历
        list.forEachIndexed { index, value ->
            println("list 下标$index 元素$value")
        }
        println(list.isEmpty())// 判断集合是否为空
        val iterator = list.iterator()// 集合元素迭代器
        while (iterator.hasNext()) {
            println(iterator.next())
        }
    
        // 可变 可读可写(增删改查)
        val mutableListOf = mutableListOf(22, 33, 44, 44)
        println(mutableListOf.size)
        println(mutableListOf.get(2))
        println(mutableListOf.indexOf(44))
        println(mutableListOf.lastIndexOf(44))
        mutableListOf.set(2, 88)// 修改元素 22 33 88 44
        mutableListOf.forEach { value ->
            println("mutableList 元素修改后$value")
        }
        mutableListOf.add(55)// 添加元素 22 33 88 44 55
        mutableListOf.forEachIndexed { index, value ->
            println("mutableList 下标$index 元素添加后$value")
        }
        mutableListOf.removeAt(2)// 删除元素 22 33 44 55
        mutableListOf.forEach { value ->
            println("mutableList 元素删除后$value")
        }
        var mutList = mutableListOf(88,66) // 添加集合 22 33 44 55 88 66
        mutableListOf.addAll(mutList)
        mutableListOf.forEach { value ->
            println("mutableList 添加集合后元素$value")
        }
        if (mutableListOf.containsAll(mutList)) {
            // mutableListOf包含mutList集合 从集合mutableListOf中删除mutList
            mutableListOf.removeAll(mutList)// 删除集合 22 33 44 55
        }
        mutableListOf.forEach { value ->
            println("mutableList 删除集合mutList后元素$value")
        }
        mutableListOf.clear()// 清除集合 0
        println(mutableListOf.size)
    }
    
    1. Set 特点:无序 不可重复
      分为可变集合(MutableSet)和不可变集合(Set)
      可变集合(MutableSet):可以对集合中的元素进行增删操作
      不可变集合(Set):对集合中的元素仅提供只读操作
    /**
     * 不可变集合
     */
    fun notChangeSet() {
        var set1 = setOf(22, 33, 55, 88)
        var set2 = setOf(22, 66, 88, 55, 33)
    
        println(set1.size)
        println(set2.size)
    
        if (set1.contains(22)) {
            println(" 包含元素 22 ")
        }
    
        if (set2.containsAll(set1)) {
            println(" 包含集合 set1 ")
        }
    
        if (set1.isNotEmpty()) {
            println(" 有数据 ")
        }
    
        val iterator = set1.iterator()
        while (iterator.hasNext()) {
            println(iterator.next())
        }
    
    }
    
    /**
     * 可变集合
     */
    fun changeSet() {
        var set1 = mutableSetOf(22, 55, 44, 88)
        var set2 = mutableSetOf(22, 44, 55, 99, 88, 77)
    
        if (set2.containsAll(set1)) {
            println(" 包含集合set1 ")
        }
    
        set1.add(11)
    
        val iterator = set1.iterator()
        while (iterator.hasNext()) {
            println(iterator.next())
        }
        println("-----------------------")
        set1.remove(88)
        val iterator1 = set1.iterator()
        while (iterator1.hasNext()) {
            println(iterator1.next())
        }
        println("========================")
        set2.removeAll(set1)
    
        val iterator2 = set2.iterator()
        while (iterator2.hasNext()) {
            println(iterator2.next())
        }
    
    }
    
    1. MutableCollection 特点:元素可变
    双列集合:
    双列集合.png
    1. Map特点:元素可重复 以键值对的形式存储 键和值对象之间存在一种对应关系 称为映射
      分为可变集合(MutableMap)和不可变集合(Map)
      可变集合(MutableMap):可以对集合中的元素进行增删操作
      不可变集合(Map):对集合中的元素仅提供只读操作
    fun main() {
        //notChangeMap()
        changeMap()
    }
    
    /**
     * 不可变集合
     */
    fun notChangeMap() {
        var map1 = mapOf(1 to "小黄", 2 to "小李子", 3 to "小杨杨")
    
        println(map1.contains(1))
    
        println(map1.containsKey(2))
    
        println(map1.containsValue("小李子"))
    
        println(map1.size)
    
        println(map1.isNotEmpty())
    
        println(map1.get(2))
    
        /*map1.forEach {
            println(it.key)
            println(it.value)
        }*/
    
        val entries = map1.entries
        val iterator = entries.iterator()
        while (iterator.hasNext()) {
            println(iterator.next())
        }
    
    }
    
    /**
     * 可变集合
     */
    fun changeMap() {
        var map1 = mutableMapOf(1 to "小样", 2 to "小赵")
        var map2 = mutableMapOf(3 to "小杨丽")
    
        map1.put(2, "小王")
    
        val iterator = map1.entries.iterator()
        while (iterator.hasNext()) {
            println(iterator.next())
        }
    
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
            map1.replace(1, "小万把")
        }
    
        val iterator1 = map1.entries.iterator()
        while (iterator1.hasNext()) {
            println(iterator1.next())
        }
    
        map1.remove(2)
    
        val iterator2 = map1.entries.iterator()
        while (iterator2.hasNext()) {
            println(iterator2.next())
        }
    
        map1.putAll(map2)
        val iterator3 = map1.entries.iterator()
        while (iterator3.hasNext()) {
            println(iterator3.next())
        }
    
    }
    

    相关文章

      网友评论

        本文标题:List、Set、Map

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