kotlin中map的使⽤技巧
这⾥是整理的⼀些随机⽤的,没有条理和前后逻辑
1.创建⼀个map的⽅式:
val mapp = mapof("key"to24,"name"to"zhangsan","age"to25)
mapp["name"]      //相当于上⼀句代码
2.map的遍历
for ((k,v) in map){
println("$k -> $v")
}
3.在kotlin中,map是只读的,⽽mutableMap是var类型的。
eg:
class User(val map:Map<String,Any?>){
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<String,Any?>){
var name: String by map
var age: Int    by map
}
4.在⾼阶函数和lambda表达式使⽤时会出现这种情况:
fun <T,R> List<T>.map(transform:(T) -> R):List<R>{
val result = arrayListOf<R>()mutable是什么意思
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(),mutable
Setof()。在⾮性能关键代码中创建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.Uid())
}
return userList
}
hah~其实我们可以⼀句话搞定这五⾏代码:
users.mapTo(arrayList(),{Uid()})
嗯 其实第⼀种完全是以java思想来写的,下⾯这句才是标准写法。
欢迎指正或者教我更加⽜掰的关于map的知识点.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。