函数式编程

变换transform

 map  flatMap

map返回的变换后的集合 中的元素个数 必须和 输入的集合(原始集合)的个数一样,不过,返回变换后的新集合里的元素可以是不同类型的

 val animals = listOf("zebra", "giraffe", "elephant", "rat")
    val babies = animals
        .map { it }  //此时集合变成 : [zebra, giraffe, elephant, rat]
        .map {it->  "the $it"}  //此时集合变成 :[the zebra, the giraffe, the elephant, the rat]
        .map { animal -> "A baby $animal"} //此时集合变成 :  [A baby the zebra, A baby the giraffe, A baby the elephant, A baby the rat]
       // .map { baby -> "$baby,with the cutest little tail ever!" }
    println(animals)//原始集合:[zebra, giraffe, elephant, rat]
    println(babies) //最终变换的集合:  [A baby the zebra, A baby the giraffe, A baby the elephant, A baby the rat]
 val animalsLength = animals.map {it->  it.length }
    println(animalsLength) //变换成的集合:[5, 7, 8, 3]  类型 int 类型

 flatMap

 flatMap 操作的一个原始集合里的所有元素都是集合,并将多个集合中的所有元素合并成一个包含了所有元素的一个单一集合。

 val result = listOf(listOf(1,2,3), listOf(4,5,6)).flatMap { it }
    println(result) //1 2 3 4 5 6

过滤filter

 val result = listOf("Jack","Jimmy","Rose","Tom")
        .filter { it.contains("J") }

    println(result)//[Jack, Jimmy]
   val items = listOf(
        listOf("red apple", "green apple", "blue apple"),
        listOf("red fish", "blue fish"),
        listOf("yellow banana", "teal banana")
    )

    val redItems1 = items.flatMap {it }
      println(redItems1) //[red apple, green apple, blue apple, red fish, blue fish, yellow banana, teal banana]
    val redItems2 = items.flatMap { it.filter { it.contains("red") }}
    println(redItems2) //[red apple, red fish]

合并 combine

 zip合并函数:合并2个函数,返回一个键值对的新集合。

   val employees  = listOf("Jack", "Jason", "Tommy")
    val shirtSize  = listOf("large", "x-large", "medium")
    val employeeShirtSizes1 = employees.zip(shirtSize)
     println(employeeShirtSizes1) //[(Jack, large), (Jason, x-large), (Tommy, medium)]


  val employeeShirtSizes2 = employees.zip(shirtSize).toMap()
    println(employeeShirtSizes2) //转为map集合: {Jack=large, Jason=x-large, Tommy=medium}
    println(employeeShirtSizes2["Jack"]) //large

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值