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) }
scala 集合
最新推荐文章于 2024-07-20 17:30:10 发布