2019独角兽企业重金招聘Python工程师标准>>>
package scalapackage
/**
* Created by Germmy on 2018/3/16.
*/
object Exercise {
def main(args: Array[String]) {
//创建一个List
var list0 = List(9, 8, 7, 6, 0, 2, 1, 4, 3, 5,10)
//将List0中每个元素乘以2后生成一个新的集合
//方法1
var list1 = list0.map(_ * 2)
// println(list1)
var list2 = for (i <- list0) yield i * 2
// println(list2)
//将list0的偶数取出来生成一个新的集合
// var list3 = list0.groupBy(_ % 2 == 0)
// var list6 = list0.map(_ % 2 == 0)
var list6 = list0.filter(_ % 2 == 0)
// println(list6)
// println(list3)//Map(false -> List(9, 7, 1, 3, 5), true -> List(8, 6, 0, 2, 4)),不知道正不正确2???
//将list0排序后生成一个新的集合
var list4 = list0.sorted
// println(list4)
//反转排序顺序
var list5 = list0.sorted.reverse
// println(list5)
//将list0中的元素4个一组,类型为Iterator[List[Int]]
var list7 = list0.grouped(4)
// println(list7.toBuffer)
//将Iterator转换成List
var list8=list7.toList
// println(list8)
//将多个List压扁成一个List
var list9=list8.flatten//压平
// println(list9)
//先按空格切分再压平
var myList=List("java is a beautiful girl","china is so big")
var list10=myList.map(_.split(" ")).flatten
var list11=myList.map(_.split(" "))
// println(list11)
var list12=myList.flatMap(_.split(" "))
// println(list12)
//并行计算求和
var sum=list0.sum
// println(sum)
var sum1=list0.par.sum
// println(sum1)
//按照特定的顺序
var sum2=list0.reduce(_+_)
// println(sum2)
var sum3=list0.par.reduceLeft(_-_)
println(sum3)
var sum4=list0.reduce(_-_)
// println(sum4)
val arr30=Array(1,2,3,4,5,6,7,8,9,10)
//折叠:无顺序
//用fold
val res2=arr30.fold(0)(_+_)
// println(res2)
val res40=arr30.par.fold(10)(_+_)
// println(res40)//每次结果都不相同,因为起的线程数不一样
//折叠:有顺序
val res41=arr30.foldLeft(10)(_+_)
// println(res41)//每次结果都是65,因为它是单线程的
//聚合(无顺序这一说)
val list30=List(List(1,2,3),List(3,4,5),List(2))
//
//方法一:用flatten,sum
val res=list30.flatten.sum
// println(res)
//方法二:reduce
val res1=list30.flatten.reduce(_+_)
// println(res)
val res3=list30.aggregate(0)(_+_.sum,_+_)
// println(res3)
val l1=List(1,2,3,4)
val l2=List(3,4,5,6)
//并集
val l3=l1 union l2
val l4=l1.union(l2)
// println(l3)
// println(l4)
//交集
val l5=l1 intersect l2
// println(l5)//期待结果3,4
//差集
val l6=l1 diff(l2)
// println(l6)//期待结果1,2,以l1为主
}
}