(1)scala集合截取
集合截取 -- slice ,看代码如下:
// 截取集合的一部分
val t = Traversable(1 to 10 :_*)
println(t.slice(2,5))
// List(3, 4, 5)
取集合前N个元素 -- take takewhile
// 取前面6个元素
println(t.take(6))
// List(1, 2, 3, 4, 5, 6)
takewhile -- 一直取元素直到满足某个条件为止。
// 一直取元素直到满足某个条件为止
println(t.takeWhile(_<6))
// List(1, 2, 3, 4, 5)
相反地,drop 为跳过某些元素,dropwhile 为跳过某些元素直到 满足条件为止。
(2)过滤元素--》filter
过滤元素 -- filter
// filter filterNot withFilter 过滤元素
println(t.filter(_ <6))
// List(1, 2, 3, 4, 5)
println(t.filterNot(_ < 6))
// List(6, 7, 8, 9, 10)
println(t.withFilter(_ < 6 ))
// scala.collection.TraversableLike$WithFilter@3dd3bcd
t withFilter(_ > 4) withFilter(_ <8) foreach(x=>print(x+" "))
// 5 6 7
withfilter 可以连着过滤条件,最后通过foreach进行输出。
(3)集合分组
// 给集合分组 splitAt span partition groupBy
// splitAt 按照索引给集合分组
println(t.splitAt(5))
// (List(1, 2, 3, 4, 5),List(6, 7, 8, 9, 10))
// span 按照条件给集合分组
println(t.span(_< 7))
// (List(1, 2, 3, 4, 5, 6),List(7, 8, 9, 10))
// partition 遍历所有元素,按照条件给集合分组
println(t.partition(_<7))
// (List(1, 2, 3, 4, 5, 6),List(7, 8, 9, 10))
// groupBy 按照条件进行分组,生产分组关键字,形成一个map类型的集合
println(t.groupBy(_>3))
// Map(false -> List(1, 2, 3), true -> List(4, 5, 6, 7, 8, 9, 10))