按 Java 的 List 写法,Kotlin 应该:
val list = ArrayList()
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() 函数创建的是一个不可变的集合。(无法对集合进行添加、修改或删除操作)
这样设计与 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 循环对集合进行遍历。
val set = setOf("Apple","Banana","Orange","Pear","Grape")
for (fruit in set) {
println(fruit)
}
Set的 setOf() 和 mutableSetOf() 与 List集合的 listOf() 和 mutableListOf() 大致用法一样,不过多赘述。
需要注意的是, Set 底层是使用 hash 映射机制来存放数据的,因此集合中的元素无法保证有序,这是和 List 最大的不同之处。
Map 是一种 “ 键值对 ” 形式的数据结构,因此再用法上与 List、Set 集合区别较大。
按照Java的写法:
val map = HashMap()
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()
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 (第三版)》 ---郭霖