这里是整理的一些随机用的,没有条理和前后逻辑
1.创建一个map的方式:
val mapp = mapof("key" to 24,"name" to "zhangsan","age" to 25)
mapp.getValue("name")
mapp["name"] //相当于上一句代码
2.map的遍历
for ((k,v) in map){
println("$k -> $v")
}
3.在kotlin中,map是只读的,而mutableMap是var类型的。
eg:
class User(val map:Map) {
val name:String by map
val age:Int by map
}
val user = User(mapof{
"name" to "zhangsan"
"age" to 25
})
//现在我们把只读的Map改为可变的MutableMap:
class MutableUser(val map : MutableMap) {
var name: String by map
var age: Int by map
}
4.在高阶函数和lambda表达式使用时会出现这种情况:
fun List.map(transform:(T) -> R):List<R>{ val result = arrayListOf<R>() for(item in this) result.add(transform(item)) return result }
这里的调用看起来都是过于复杂的,先定义一个空的ArrayList<>(),这种方法一般都不是高效的方法,我们可以写成这样:
val arrayDouble = ints.map(value -> value * 2)
当出现这种情况时,如果括号中的参数只有一个,那么完全可以省略括号,同时其变量可以用it来代替,还可省略“->”:
ints.map { it *2 }
5.这里有一个概念,叫做“对lambda表达式参数使用解构声明语法”,使用map对集合中的数据进行遍历就是其中的一个例子。
map.mapValues { entry -> "${entry.value}!" }
map.mapValues { (key, value) -> "$value!" }
注意声明两个参数和声明⼀个解构对来取代单个参数之间的区别:
{ a //-> …… } // ⼀个参数
{ a, b //-> …… } // 两个参数
{ (a, b) //-> …… } // ⼀个解构对
{ (a, b), c //-> …… } // ⼀个解构对以及其他参数
6.kotlin中 没有专门的语法 来创建list或者set,要用标准库方法,如listof(),mutableof(),setof(),mutableSetof()。在非性能关键代码中创建map可以用一个简单的惯用方法来完成:map(a to b, c to d).
【上面这句是官网翻译文档,师父说不能别人翻译的全信,嗯意思就是 其实listof(),mutableof(),setof(),mutableSetof()就是构造函数,就是用来创建对应集合的。hah~】
在这些集合相关的类型中,我们用三个标志,暂时称之为标志吧,来定义:first、last和step 。 其中first是第一个元素,last是最后一个元素,每个元素的后一个元素就是前一个元素加step。所以呢,for循环可以写成这样:
for(i:int = first;i < last,i += step){
//...
}
7.今天写代码的时候,突然看到一种炒鸡牛掰的简便写法,分享:
为了遍历一个集合,进行一定的操作之后,再返回一个List集合,肯定最先想到的是:先创建一个空的ArrayList,用来存储每次遍历之后得到的数据,再返回这个ArrayList,代码是这样:
fun getSomeThing(users:MutableIterable<User>) : MutableList<Any>{
val userList= mutableListof<Any>()
users?.forEach{
userList.add(user.getUid())
}
return userList
}
hah~其实我们可以一句话搞定这五行代码:
users.mapTo(arrayList(),{user.getUid()})
嗯 其实第一种完全是以java思想来写的,下面这句才是标准写法。
欢迎指正或者教我更加牛掰的关于map的知识点.