【Kotlin -- 知识点】数据容器(数据 & 集合)

容器是用于存放数据的载体。容器分为数组、集合。

Kotlin 数组

1. 特点

数组是一种初始化时指定容器大小,不可以动态调整其大小的容器。元素按顺序存储在一串连续的内存段上。

2. 创建方式

  • arrayOf 创建数组
    创建一个数组并传递元素值给它,集合中的元素可以是任意类型
val array = arrayOf(1, 2, 3)
val arr = arrayOf(1, true, "kotlin", JSONObject())    // 集合中的元素可以是任意类型
  • arrayOfNulls 创建数组
    创建一个指定大小的、所有元素都为空的数组,但必须指定集合中的元素类型
val args = arrayOfNulls<String>(6)
  • 动态创建数组
    用接受数组大小以及一个方法参数的 Array 构造方法,用作参数的方法能够返回给定索引的每个元素初始值:
    13.png

3. 常见操作

14.png

  • 获取元素
val array = arrayOf(1, 2, 3, 4, 5)
array[index]    //获取数组的第 index 个元素,下标从 0 开始
  • for 循环 – 元素遍历
fun main() {
    val args = arrayOf(1, 2, 3, 4, 5)
    for (item in args) {
        println(item)  
    }
}
  • for 循环 – 下标遍历
fun main() {
    val args = arrayOf(1, 2, 3, 4, 5)
    for (i in args.indices) {
        println(i.toString() + "→" + args[i])
     
    }
}
  • for 循环 – 遍历元素(带索引)
fun main() {
    val args = arrayOf(1, 2, 3, 4, 5)
    for ((index, item) in args.withIndex()) {
        println("$index ===> $item")
    }
}
  • forEach 遍历数组
fun main() {
    val args = arrayOf(1, 2, 3, 4, 5)
    args.forEach { 
        println(it)
    }
}
  • forEach 增强版
val args = arrayOf(1, 2, 3, 4, 5)
    args.forEachIndexed{index, item ->
        println("$index ===> $item")
    }

Kotlin 集合

各种集合对于解决问题都具有重要意义,并且经常用到。与数组不同的是可变集合的大小可以动态改变。

  • List 集合:是一个有序列表,可通过索引访问元素。元素可以在 list 中出现多次、元素可重复
  • Set 集合:是元素唯一的集合。一组无重复的对象。
  • Map 集合:是一组键值对。键是唯一的,每个键都刚好映射到一个值,值可以重复

创建方式

1. List 集合创建
fun main() {
    // 可变列表,必须指定元素类型
    val list = mutableListOf<String>()
    list.add("android")
    list.add("ios")
    list.add("kotlin")

    val list2 = mutableListOf("java","c#","spring")
    list2.add("c++")

    // 不可变列表,必须指定元素类型;必须指定初始化数据元素
    val list3 = listOf(1,2,3)
}
2. Map 集合创建
fun main() {
    // 可变 map
    val map = mutableMapOf<Int,String>()
    map[1] = "android"
    map[2] = "ios"
    map[3] = "android"

    // 使用 Pair 指定集合中初始化的元素
    val map2 = mutableMapOf(Pair(1,"A"), Pair(2,"B"))


    // 不可变 map,元素使用 Pair 包装;必须指定初始元素
    val map3 = mapOf(Pair(1,"kotlin"))
}
3. Set 集合创建
fun main() {
    // 可变 Set,元素唯一
    val set = mutableSetOf<String>()
    set.add("android")
    set.add("ios")
    set.add("windows")
    set.add("windows") // 这个是添加不进去的噢
    for (item in set) {
        println(item)
    }

    val set2 = mutableSetOf("abc","def","ghk")
    set2.add("abc") // 这个是添加不进去的噢


    // 不可变 Set,必须指定初始元素
    val map3 = setOf<Int>(1, 2, 3)
}
}

集合的操作

15.png

集合的排序

1. 翻转
fun main(
    val list = mutableListOf(1,3,5,7,9)
    list.reverse()
    list.forEach {
        print("$it ")
    }
}
2. 排序,从小到大
fun main() {
    val list = mutableListOf(2,1,3,5,7,5)
    list.sort()
    list.forEach {
        print("$it ")
    }
}
3. 排序,从大到小
fun main() {
    val list = mutableListOf(2,1,3,5,7,5)
    list.sortDescending()
    list.forEach {
        print("$it ")
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kevin-Dev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值