Scala中List常用方法使用(四)

def main(args: Array[String]): Unit = {
    // TODO Scala 集合 常用方法
    val list = ListBuffer(1,2,3,4,5)

    // 28. map: 映射, 将集合通过计算(转换规则)转换成另外一个集合.
    var result =  for(i <- list) yield {
      "*" * i
    }
    println(result)

    list.map((i:Int)=>{"*" * i})
    println(list.map("*" * _))

    // 29. flatten: 扁平化, 将集合中的整体(集合)拆分成一个一个的个体
    var list2 = List(List(1,2),List(3,4))
    // List(1,2,3,4)
    println(list2.flatten)

    val list3 = List(List(List(1,2)),List(List(3,4)))
    println(list3.flatten.flatten)

    val list4 = List("hello scala","hello spark")
    // List("hello","scala","hello","spark")
    println(list4.flatten)

    // 30. flatMap:  集合扁平映射。
    println(list4.flatMap(str => {str.split(" ")}))
    println(list4.flatMap(_.split(" ")))

    var list5 = List(List(1,2),List(3,4))

    def myflatmap(ls:List[Int]):List[Int]={
      ls.map(_ * 2 )
    }

    println(list5.flatMap(myflatmap))

    //list5.flatMap(element=>element.map(_ * 2))
    println(list5.flatMap(_.map(_ * 2)))


    // 31. filter: 集合过滤数据, 按照指定的规则对集合中的元素进行过滤,
    //                  满足规则的数据保留,不满足规则的数据丢弃

    val list6 = List(1,2,3,4)

    // 过滤偶数
    //println(list6.filter((i: Int) => {i % 2 == 0}))
    println(list6.filter( _ % 2 == 0))

    val list7 = List("hello","hello","scala","haha")

    println(list7.filter(_.startsWith("h")))

    val list8 = List("hello scala","hello spark")

    println(list8.flatMap(_.split(" ")).filter(_.startsWith("s")))

    // 32.groupBy: 分组, 按照指定的分组规则, 对集合中的元素进行分组, 返回的一个map,
    //            map的key就是分组规则计算的结果,  map的value就是每组的数据(集合)

    val list9 = List(1,2,3,4,5,6,7,8,9)

    //按照集合元素对3取余的结果进行分组
    println(list9.groupBy((i: Int) => {i % 3}))

    val list10 = List("hello","hello","scala","haha","hive","scala","hello")
    //按照单词分组
    println(list10.groupBy(str => str))

    //println(list10.groupBy(_ => {"haha"}))
    //println(list10.groupBy(_))


    //33. sortBy: 集合排序, 按照指定的排序规则将集合中的元素进行排序
    val list11 = List(3,1,4,2)

    //println(list11.sortBy((i: Int) => {i}))
    println(list11.sortBy(i => i))  // 默认升序
    println(list11.sortBy(i => -i)) // 降序

    println(list11.sortBy(i=>i)(Ordering.Int.reverse))

    val list12 = List((30,"zhangsan"),(20,"wangwu"),(20,"lisi"))

    println (list12.sortBy(t=>t) {
      Ordering.Tuple2(Ordering.Int.reverse, Ordering.String.reverse)
    })

    //34. sortWith:  自定义排序
    val list13 = List((30,"zhangsan"),(20,"wangwu"),(20,"lisi"))

    // 希望升序排序 left < right , 希望降序排序  left > right
    println(list13.sortWith((left, right) => {
      if (left._1 == right._1) {
        left._2 > right._2
      } else {
        left._1 < right._1
      }
    }))


  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值