Kotlin入门笔记(八)集合 与 遍历

前言:本教程最好在有JAVA的基础下进行学习

一、List集合

ListOf()

按 Java 的 List 写法,Kotlin 应该:

val list = ArrayList<String>()
list.add("Apple")
list.add("Banana")
list.add("Orange")
list.add("Pear")
list.add("Grape")

但是 Kotlin 专门内置的 listOf() 函数来简化初始化集合的写法:

val list = listOf("Apple","Banana","Orange","Pear","Grape")

可以用 for-in 循环进行遍历。


fun main() {
    val list = listOf("Apple","Banana","Orange","Pear","Grape")
    for (fruit in list) {
        println(fruit)
    }
}

不过需要注意的是,listOf() 函数创建的是一个不可变的集合。(无法对集合进行添加、修改或删除操作

mutableListOf()

这样设计与 val 关键字类不可继承 的设计初衷是类似的,Kotlin在不可变方面控制极其严格。如果创建一个可变集合,可以使用 mutableListOf() 函数就可以了,示例如下:

fun main() {
    val list = mutableListOf("Apple","Banana","Orange","Pear","Grape")
    list.add("Watermenol")
    for (fruit in list) {
        println(fruit)
    }
}

 这里先使用 mutableListOf() 函数创建一个可变的集合,然后向集合中添加了一个新的水果,最后再使用 for-in 循环对集合进行遍历。

(2) Set 集合

setOf()

val set = setOf("Apple","Banana","Orange","Pear","Grape")
for (fruit in set) {
    println(fruit)
}

mutableSetOf()

        Set的 setOf() 和 mutableSetOf()  与 List集合的 listOf() mutableListOf() 大致用法一样,不过多赘述。

需要注意的是, Set 底层是使用 hash 映射机制来存放数据的,因此集合中的元素无法保证有序,这是和 List 最大的不同之处。

Map集合

Map 是一种 “ 键值对 ” 形式的数据结构,因此再用法上与 List、Set 集合区别较大。

按照Java的写法:

val map = HashMap<String , Int>()
map.put("Apple",1)
map.put("Banana",2)
map.put("Orange",3)
map.put("Pear",4)
map.put("Grape",5)

但是在 Kotlin 中更推荐使用类似数组下标的语法结构,

比如向 Map 中添加一条数据可以这么写:

map["Apple"] = 1

读取 Map 中的结构可以这么写:

val num = map["Apple"]

因此,上述代码可以写成:

val map = HashMap<String , Int>()
map["Apple"] = 1
map["Banana"] = 2
map["Orange"] = 3
map["Pear"] = 4
map["Grape"] = 5

但是,按照 Kotlin 一向的作风 . . . 。没错,它提供了一对 mapOf() mutableMapOf() 函数来继续简化 Map 的用法。在 mapOf() 中,我们可以直接传入初始化的键值对组合来完成对 Map 集合的创建:

val map = mapOf ("Apple" to 1 , "Banana" to 2 , "Orange" to 3 , "Pear" to 4 , "Grape" to 5)

这里的键值对组合看上去好像是用 to 这个关键字来进行关联的,但其实 to 并不是关键字,而是一个 infix 函数(这个暂时放放,会在后面讨论)

fun main() {
    val map = mapOf("Apple" to 1 , "Banana" to 2 , "Orange" to 3 , "Pear" to 4 , "Grape" to 5)
    for((fruit , number) in map) {
        println("fruit is " + fruit + ", number is " + number)
    }
}

如果喜欢这个系列的话,不妨点个关注吧!感谢您的观看!

参考:

        《第一行代码 Android (第三版)》   ---郭霖

猜你喜欢

转载自blog.csdn.net/m0_46745664/article/details/122896785