scala 集合

package com.oycc.helloScala

import scala.collection.mutable.ArrayBuffer

object CollectionTest extends App {
  val list = List(4,3,4,6,7)
  val list2 = List(5,6,7)
  val arr = ArrayBuffer(9,8,7,2,2,41,34)

  //collect
//  val pf:PartialFunction[Int,String]={
//      case 1 => "asa"+1
//      case 2 => "oycc"+2
//      case _ => "nothing"
//  }
//  val lr = list.collect(pf)
//  println(lr)

  //drop dropWhile dropRight
//  val ld = list.drop(2)//从前端开始删n个数
//  println(ld)
//  val ldw = list.dropWhile(_%2==1)//遇到false就立刻停止删除
//  println(ldw)
//  val ldr = list.dropRight(2)//从后端开始删n个数
//  println(ldr)

  //filter
//  val lf = list.filter(_%2==0)//获取符合条件的元素
//  println(lf)
//  val lfn = list.filterNot(_%2==0)//获取不符合条件的元素
//  println(lfn)

  //find
//  val lfd = list.find(_%2==0)//返回的是一个Option类型,找到第一个就不找了
//  lfd.foreach(println)

  //head headOption
//  val lh = list.head //返回第一个元素
//  println(lh)
//  val lho = list.headOption //返回第一个元素并用Option类型包装
//  println(lho)

  //init
//  val li = list.init//截取除最后一个元素外的所有元素
//  println(li)

  //last lastOption
//  val ll = list.last//截取除最后一个元素
//  println(ll)
//  val llo = list.lastOption//截取除最后一个元素并用Option包装
//  println(llo)

  //remove
//  val lr = arr.remove(2)//删除index为n的值并返回删除的值
//  println(lr)
//  println(arr)

  //slice
//  val ls = arr.slice(2,6)//截取出从index为arg1开始,到arg2之间的值,不包含arg2的值
//  println(ls)
//  println(arr)

  //tail
//  val lt = list.tail//截取出第一个元素以外的其他元素
//  println(lt)

  //take takeWhile
//  val lt = list.take(3)//截取前n个元素
//  println(lt)
//  val ltw = list.takeWhile(_%2==0)
//  println(ltw)//遇到false就停止选取

  //union
//  val lu = list.union(list2)//合并两个集合
//  println(lu)

  //diff
//  val ld = list.diff(list2)//截取和第二个集合中不同的元素
//  println(ld)

  //intersect
//  val li = list2.intersect(list)//内连接,选取两个集合相同的元素
//  println(li)

  //groupBy partition
//  val lg = list.groupBy(_%2==0)//根据函数返回值进行分组
//  println(lg)
//  val lp = list.partition(_%2==0)//只能分两组
//  println(lp)

  //sliding窗口滑动选取元素
//  val ls = list.sliding(4,2)//sliding第一个参数的含义是几个元素组成一个List,所以是每4个元素组成一个List,剩余元素不够的组成一个List。
//                            //第二个参数的含义可以理解为,每次List第一个元素相对上一个List的第一个元素移动的步数。
//  ls.foreach(println)

  //span splitAt unZip
//  val ls = list.span(_%2==0)//从左向右应用条件p进行判断,直到条件p不成立,此时将列表分为两个列表
//  println(ls)
//
//  val lsa = list.splitAt(3)
//  println(lsa)
//
//  val lz = list.zip(list2)
//  println(lz)
//  val lu = lz.unzip
//  println(lu)

  //fold foldLeft foldRight
//  val lf = list.fold(1)(_-_)//将初始化元素放在head 然后运行reduce函数
//  println(lf)
//  val num = List(2.0,3.0)
//  val lfl = num.foldLeft(4.0)(math.pow)//将初始化元素放在head,然后从左开始运行函数
//  println(lfl)
//  val lfr = num.foldRight(1.0)(math.pow)//将初始化元素放在head,然后从右开始运行函数
//  println(lfr)

  //reduce reduceLeft reduceRight

  val lf = list.reduce(_+_)//和fold一样只是没有初始值
    println(lf)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值