学习kotlin的一些笔录4

14.集合

创建一个包含水果名称的集合,可类似java的写法,ef:

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

但以上这种写法有点繁琐,kt提供了一种内置函数listOf()简化,其中listOf()是不可变的只在创建时赋值,只可读取即不可进行增删改操作,kt这样设计的理由:类似val、类默认不可继承的初衷类似,ef:

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

若想创建个可变的集合则可以用到mutableListOf,mutableListOf可存放相同元素,ef:

fun main(){
    val list = mutableListOf("Apple", "Banana", "Orange")
    list.add("Pear")
    list.add("Apple")
    for(fruit in list){
        println(fruit)
    }
}
//打印结果为:
Apple
Banana
Orange
Pear
Apple

去重的可变集合为setOf(),该集合若存放了多个不同的元素,只保留一个,ef:

fun main(){
    val set = setOf("Apple", "Banana", "Orange", "Pear", "Apple")
    for(fruit in set){
        println(fruit)
    }
}
//打印如下,最后添加的Apple不放入集合中,起到了去重的效果
Apple
Banana
Orange
Pear

键值对的集合Map,和java的类似,下面来创建一个带编号的水果集,并通过键值获取,ef:

fun main(){
    val map = HashMap<String, Int>()
    map.put("Apple", 1)
    map.put("Banana", 2)
    map.put("Orange", 3)
    map.put("Pear", 4)
    println(map.get("Apple"))
}
//打印如下
1

但其实kt中不建议使用类似java的方式put()和get()操作添加和读取map,而采用类似数组下标的语法结构,ef:

val map = HashMap<String, Int>()
//添加键值
map["Apple"] = 1
map["Banana"] = 2
map["Pear"] = 3
//通过键读取值
val number = map["Apple"]

但这仍不是最简写法,可通过mapOf()和mutableMapOf()继续简化,用infix函数to将键值关联,infix函数会在后面补上;其中mapOf()是不可变的,只在创建时赋值,只读不可操作;而mutableMapOf()为可变,可操作的,ef:

fun main(){
    val map = mapOf("Apple" to 1, "Banana" to 2, "Orange" to 3)
    //以下遍历集合
    for((fruit, number) in map){
        println("fruit is " + fruit + ", number is " + number)
    }
}
//mutableMapOf()类似,不过多了增删改的操作,这里暂不做详讲

//上面的maoOf()打印如下
fruit is Apple, number is 1
fruit is Banana, number is 2
fruit is Orange, number is 3

下面归纳一下:

集合listOf()mutableListOf()setOf()mapOf()mutableMapOf()
作用差异不可变、元素可重复可变、元素可重复可变、元素去重不可变键值对可变键值对
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值