一、数组列表:
1、List
声明一个list并打印
var lists = listOf("化学","物理","数学")
for(list in lists){
println(list)
}
//获取第一个对象
val firstBean = lists.first()

用 listOf
函数创建的是一个不可变的集合,创建可变集合使用 mutableListOf
val list = mutableListOf("Apple","Banana","Orange")
list.add("Pear")
前边介绍的是 List 集合的用法,实际上 Set 集合与此一模一样只是换成了 setOf() 和 mutableSetOf()
2、Map
Kotlin的Map集合用于保存key-value对
var map = TreeMap<String,String>()
map["好"] = "good"
map["学习"] = "study"
map["天"] = "day"
map["向上"] = "up"
for ((key, value) in map) {
println("${key}->${value}")
}

从 Map 中读取一条数据可以这样写
println(map["好"])
像 List 和 Set 一样,Kotlin也提供了一对 mapOf() 和 mutableMapOf() 来简化 Map 用法
val map = mapOf("好" to "good","学习" to "study","天" to "day","向上" to "up")
for((key,value) in map){
println("${key}->${value}")
}
二、集合的函数式API:


1、找出长度最长的单词
如果我们有一个水果集合,要找出单词最长的那个你可以这样写
val list = listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
var maxLengthFruit = ""
for(fruit in list){
if(fruit.length > maxLengthFruit.length){
maxLengthFruit = fruit
}
}
println("max lenth fruit is "+maxLengthFruit)
运行结果
max lenth fruit is Watermelon
如果我们使用集合的函数式API,可以让这个功能更简单
val list = listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
var maxLengthFruit = list.maxBy { it.length }
println("max lenth fruit is "+maxLengthFruit)
现在看这段代码你可能比较吃力,因为还没有学 Lambda 表达式的语法结构。Lambda 就是一小段可以作为参数传递的代码,通常不建议在 Lambda 表达式中编写太长代码,否则可能影响代码可读性。Lambda 表达式语法结构如下:
{参数名1:参数类型,参数名2:参数类型 -> 函数体}
首先最外层是一对大括号,如果有参数传入到 Lambda 表达式中的话,我们还需要声明参数列表,参数列表结尾用一个 -> 符号表示参数列表结束以及函数体开始。函数体中可以编写任意行代码(不建议编写太长代码),并且最后一行代码会自动作为 Lambda 表达式的返回值
2、map函数:单词变成大写
集合中的 map 函数是最常用的一种函数式 API,它用于将集合中的每个元素都映射成另外的值,映射规则在 Lambda 表达式中指定,最终形成新的集合。
例如,我们希望让所有水果都变成大写模式
val list = listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
val newlist = list.map { it.toUpperCase() }
for(fruit in newlist){
println(fruit)
}

3、filter 函数:保留5字以内的水果
filter 函数就是过滤集合中数据的,可以单独使用,也可以配合 map 函数使用
val list = listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
val newlist = list.filter { it.length <=5 }
.map { it.toUpperCase() }
for(fruit in newlist){
println(fruit)
}
4、any 和 all
- any 函数用于判断集合中是否至少存在一个元素满足指定条件
- all 函数用于判断集合中是否所有元素满足指定条件
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
val anyResult = list.any { it.length <= 5 }
val allResult = list.all { it.length <= 5 }
println("anyResult is " + anyResult + ",allResult is " + allResult)
结果:
anyResult is true,allResult is false
网友评论