第1节 Scala基础语法:14、15、list集合练习
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
}
}
第1节 Scala基础语法:14、15、list集合练习的更多相关文章
- 第1节 Scala基础语法:5、6、7、8、基础-申明变量和常用类型,表达式,循环,定义方法和函数
4. Scala基础 4.1. 声明变量 package cn.itcast.scala object VariableDemo { def main(args: Array[Strin ...
- 第1节 Scala基础语法:13、list集合的定义和操作;16、set集合;17、map集合
list.+:5 , list.::5: 在list集合头部添加单个元素5 : li1.:+(5):在list集合尾部添加单个元素5: li1++li2,li1:::li2:在li1集合尾部添加il2 ...
- 第1节 Scala基础语法:scala中的方法源码分析
val list=List(1,2,3,4) list.reduce((x:Int,y:Int)=>x+y)--->list.reduceLeft((x:Int,y:Int)=>x+ ...
- 第1节 Scala基础语法:11、映射;12、元组
5.2. 映射 在Scala中,把哈希表这种数据结构叫做映射. 1.1.1. 构建映射 (1)构建映射格式 1.val map=Map(键 -> 值,键 -> 值....) 2. ...
- 第1节 Scala基础语法:9、10、数组
1. 定义数组时,没有new和有new是有区别的: scala> val arr3 = Array[Int](2) 此时,arr3中仅包含1个元素2arr3: Array[Int] = A ...
- 第1节 Scala基础语法:3、环境;4、插件
1. Scala编译器安装 1.1. 安装JDK 因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK. 1.2. 安装Scala 1.2.1. Windows ...
- 第1节 Scala基础语法:1、2、概述,什么是scala
Scala编程 1. 课程目标 1.1. 目标1:熟练使用scala编写Spark程序 1.2. 目标2:动手编写一个简易版的Spark通信框架 1.3. 目标3:为阅读Spark内核源码 ...
- 1.scala基础语法总结
Scala基础语法总结:Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的.如果一行里写多个语句那么分号是需要的 val s = "菜鸟教程"; pr ...
- 【Scala学习之一】 Scala基础语法
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
随机推荐
- XFire客户端调用CXF服务端(四)
前面章节:http://www.cnblogs.com/xiehongwei/p/8082337.html 已经开发出了CXF服务端,现在用XFire开发客户端调用CXF服务端,代码如下: impor ...
- windows10下VS2013搭建opencv2.4.9吐血之作
1.下载opencv2.4.9.exe文件,然后双击extract文件到指定目录 2.按此链接安装opencv:https://www.cnblogs.com/cuteshongshong/p/405 ...
- 红帽RHCE培训-课程3笔记内容2
9 NFS 9.1 NFS基础 目标 .使用NFS将文件系统连接到客户端,并使用IP 地址控制访问 .使用NFS将文件系统连接到客户端,并使用kerberos 来控制访问 .配置用户名和密码控制访问的 ...
- 6、Maven仓库
在Maven的术语中,仓库是一个位置(place),例如目录,可以存储所有的工程.jar文件,library jar文件,插件或者任何其他的工程指定的文件 Maven仓库有三种类型 本地(local) ...
- 【代码学习】PYTHON装饰器
一.装饰器 对原代码不修改的基础上完善代码 写代码要遵循开放封闭原则,虽然在这个原则是用的面向对象开发,但是也适用于函数式编程,简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展,即: 封闭 ...
- C语言-对字符串二维数组各个元素进行比较-十进制数转化为其他进制数-进行规则矩阵的输出-190225
//编写一个函数:从传入的num个字符中找到最长的一个字符,并通过max传回该串地址. //重点:切记这里a[0]就是一个地址. #include<conio.h> #include< ...
- html5的canvas2
http://www.cnblogs.com/liugang-vip/p/5360283.html http://www.cnblogs.com/liugang-vip/p/5364292.html ...
- LeetCode练题——35. Search Insert Position
1.题目 35. Search Insert Position Easy 1781214Add to ListShare Given a sorted array and a target value ...
- P1893山峰瞭望
传送门 看完这个题,大家都懂意思吧,然后代码呢,emmmmm #include <bits/stdc++.h> using namespace std; const int maxn = ...
- mDNS故障排查(译)
WLC上mDNS网关的理解及排查 第一部分:介绍 这篇文档描述了Bonjour协议在WLC上的操作,该文档旨在协助工程师理解该工作流量的原理以及提供故障排查的指导. 第二部分:需求和前提 知识需求: ...