Kotlin 映射操作函数

2022-11-21  本文已影响0人  因为我的心

必看:https://www.bookstack.cn/read/JackChan1999-Kotlin-Tutorials/README.md

1、map(transform: (T) -> R): List<R>

将集合中的元素通过转换函数transform映射后的结果,存到一个集合中返回。

      val list = listOf(1,2,3,4,5,6,7)
        //1、map(transform: (T) -> R): List<R>
        var list1 = list.map { it }
        var list2 = list.map { it*2 }
        var list3 = list.map { it+10 }
        Log.d("LUO","----list1:${list1}") //list2:[1, 2, 3, 4, 5, 6, 7]
        Log.d("LUO","----list2:${list2}") //list3:[2, 4, 6, 8, 10, 12, 14]
        Log.d("LUO","----list3:${list3}") //list3:[11, 12, 13, 14, 15, 16, 17]

2、mapIndexed(transform: (kotlin.Int, T) -> R)

转换函数transform中带有下标参数。也就是说我们可以同时使用下标和元素的值来进行转换。 其中,第一个参数是Int类型的下标。

     var list4 = list.mapIndexed { index,value ->
            index*value
        }
        Log.d("LUO","----list4:${list4}") //list4:[0, 2, 6, 12, 20, 30, 42]

3、mapNotNull(transform: (T) -> R?)

遍历集合每个元素,得到通过函数算子transform映射之后的值,剔除掉这些值中的null,返回一个无null元素的集合。

 val mainList = listOf("a","b",null,"x",null,"z")
 var list5 = mainList.mapNotNull { it }
 Log.d("LUO","----list5:${list5}") //list5:[a, b, x, z]

4、flatMap(transform: (T) -> Iterable<R>): List<R>

使用flatMap则是把list中的第一个元素映射成一个List1,然后把第二个元素映射成的List2跟List1合并:List1.addAll(List2),以此类推。最终返回一个“扁平的”(flat)List。

注意:扁平化映射,可以将多维数组或集合转换为一维集合

val list = listOf(1,2,3,4,5,6,7)
 val aList = listOf("a","b","c")
        var list6 = aList.flatMap({it->listOf(it+1,it+2,it+3)})
        Log.d("LUO","----list6:${list6}") //list6:[a1, a2, a3, b1, b2, b3, c1, c2, c3]

5、 list.mapNotNullTo(bList)

mapNotNullTo:将list数据加入到bList中,it的数据操作,不影响bList返回值,最后:list和bList数值一样.

   val list = listOf(1,2,3,4,5,6,7)
   val bList = mutableListOf<Int>()
        list.mapNotNullTo(bList){
            when(it){
                1 ->{
                    Log.d("LUO","----1-----")//执行了
                }
                2->{
                    Log.d("LUO","----2-----")//执行了
                }
                else ->{
                    Log.d("LUO","----else-----")//执行了
                }
            }

            it
        }
        Log.d("LUO","----list:${list}") //list:[1, 2, 3, 4, 5, 6, 7]
        Log.d("LUO","----bList:${bList}")//bList:[1, 2, 3, 4, 5, 6, 7]

参考链接:https://www.bookstack.cn/read/JackChan1999-Kotlin-Tutorials/%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6-%E6%98%A0%E5%B0%84%E6%93%8D%E4%BD%9C%E5%87%BD%E6%95%B0.md

上一篇 下一篇

猜你喜欢

热点阅读