第1节 Scala基础语法:14、15、list集合练习

mac2022-06-30  93

package cn.itcast.collect

/** *作业题 */object ListTest { def main(args: Array[String]): Unit = { //创建一个List val list0=List(1,7,9,8,0,3,5,4,6,2)

//将list0中的每一个元素乘以10后生成一个新的集合 val list1=list0.map(x=>x*10) println("list1==== "+list1)

//将list0中的偶数取出来生成一个新的集合 val list2=list0.filter(x=>x%2==0) println("list2==== "+list2)

//将list0排序后生成一个新的集合 val list3=list0.sorted val list4=list0.sortBy(x=>x) val list5=list0.sortWith((x,y)=>x<y) println("list3==== "+list3) println("list4==== "+list4) println("list5==== "+list5)

//反转顺序 val list6=list3.reverse println("list6==== "+list6)

//将list0中的元素4个一组,类型为Iterator[List[Int]] val list7=list0.grouped(4) println("list7==== "+list7)

//将Iterator转换成List val list8=list7.toList println("list8==== "+list8)

//将多个list压扁成一个List val list9=list8.flatten println("list9==== "+list9)

val lines = List("hello tom hello jerry", "hello jerry", "hello kitty") //先按空格切分,在压平 val result1=lines.flatMap(_.split(" ")) println("result1==== "+result1)

//并行计算求和 val result2=list0.par.sum println("result2==== "+result2)

//化简:reduce //将非特定顺序的二元操作应用到所有元素 val result3=list0.reduce((x,y) => x + y) 还可以这么写: val result3=list0.reduce(_+_) 第一个下划线表示累加后的结果,第二个表示集合中的下一个元素 println("result3==== "+result3)

//按照特定的顺序 val result4 = list0.reduceLeft(_+_) val result5= list0.reduceRight(_+_) println("result4==== "+result4) println("result5==== "+result5)

//折叠:有初始值(无特定顺序) val result6 = list0.fold(100)((x,y)=>x+y) println("result6==== "+result6)

//折叠:有初始值(有特定顺序) val result7 = list0.foldLeft(100)((x,y)=>x+y) println("result7==== "+result7)

//聚合 val list10= List(List(1, 2, 3), List(4, 5, 6), List(7,8), List(9,0)) val result8 = list10.par.aggregate(10)(_+_.sum,_+_) println("result8==== "+result8)

//获取到参与并行计算的线程 println(list10.par.collect{ case _=>Thread.currentThread().getName }.distinct)

val l1 = List(5,6,4,7) val l2 = List(1,2,3,4) //求并集 val r1=l1.union(l2) println("r1=== "+r1)

//求交集 val r2=l1.intersect(l2) println("r1=== "+r2)

//求差集 val r3=l1.diff(l2) println("r3=== "+r3)

reduceLeft(op), reduceLeft(op), foldLeft(init)(op), foldRight(init)(op) 是将操作应用到同一集合的相邻元素 定义 val list = List(1,2,3,4) 运算 list.reduceLeft(_-_) 运算 list.reduceRight(_-_)   // 源码中的运算步骤为: 1-(2-(3-4)) = -2 运算 list.foldLeft(0)(_-_) 运算 list.foldRight(0)(_-_)  // 源码中的运算步骤为: 1-(2-(3-(4-0))) = -2

}

}

转载于:https://www.cnblogs.com/mediocreWorld/p/11334274.html

相关资源:快学Scala 课后习题答案集合
最新回复(0)