-
Scala
2019-11-21 21:51:59Scala 安装(win) scala 基础 Scala 隐式转换 Scala 字符串 Scala Array scala List scala set scala map Scala match Scala Case Scala Abs scala trait Scala paralle Scala class Scala Object scala 集合 Scala ... -
scala
2020-08-24 20:25:29scala> val a = List(1,2,3,4)a: List[Int] = List(1, 2, 3, 4) scala> println(a.toString)List(1, 2, 3, 4) 生成字符串 mkString方法,可以将元素以分隔符拼接起来。默认没有分隔符 参考代码 ...转换字符串
toString方法可以返回List中的所有元素
参考代码
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
scala> println(a.toString)
List(1, 2, 3, 4)生成字符串
mkString方法,可以将元素以分隔符拼接起来。默认没有分隔符
参考代码
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
scala> a.mkString
res7: String = 1234
scala> a.mkString(":")
res8: String = 1:2:3:4并集
union表示对两个列表取并集,不去重
参考代码
scala> val a1 = List(1,2,3,4)
a1: List[Int] = List(1, 2, 3, 4)
scala> val a2 = List(3,4,5,6)
a2: List[Int] = List(3, 4, 5, 6)
// 并集操作
scala> a1.union(a2)
res17: List[Int] = List(1, 2, 3, 4, 3, 4, 5, 6)
// 可以调用distinct去重
scala> a1.union(a2).distinct
res18: List[Int] = List(1, 2, 3, 4, 5, 6)交集
intersect表示对两个列表取交集
scala> val a1 = List(1,2,3,4)
a1: List[Int] = List(1, 2, 3, 4)
scala> val a2 = List(3,4,5,6)
a2: List[Int] = List(3, 4, 5, 6)
scala> a1.intersect(a2)
res19: List[Int] = List(3, 4)差集
diff表示对两个列表取差集,例如: a1.diff(a2),表示获取a1在a2中不存在的元素
scala> val a1 = List(1,2,3,4)
a1: List[Int] = List(1, 2, 3, 4)
scala> val a2 = List(3,4,5,6)
a2: List[Int] = List(3, 4, 5, 6)
scala> a1.diff(a2)
res24: List[Int] = List(1, 2)Set
Set(集)是代表没有重复元素的集合。Set具备以下性质:
- 元素不重复
- 不保证插入顺序
scala中的集也分为两种,一种是不可变集,另一种是可变集。
不可变集
语法
创建一个空的不可变集,语法格式:
val/var 变量名 = Set[类型]()
给定元素来创建一个不可变集,语法格式:
val/var 变量名 = Set(元素1, 元素2, 元素3...)
示例一
定义一个空的不可变集
参考代码
scala> val a = Set[Int]()
a: scala.collection.immutable.Set[Int] = Set()示例二
定义一个不可变集,保存以下元素:1,1,1,1,1,3,2,4,8
参考代码
scala> val a = Set(1,1,1,1,1,3,2,4,8)
a: scala.collection.immutable.Set[Int] = Set(1, 2, 3, 8, 4)基本操作
- 获取集的大小(size)
- 遍历集(和遍历数组一致)
- 添加一个元素,生成一个Set(+)
- 拼接两个集,生成一个Set(++)
- 拼接集和列表,生成一个Set(++)
示例
参考代码
// 创建集
scala> val a = Set(1,1,2,3,4,5)
a: scala.collection.immutable.Set[Int] = Set(5, 1, 2, 3, 4)
// 获取集的大小
scala> a.size
res0: Int = 5
// 遍历集
scala> for(i <- a) println(i)
// 删除一个元素
scala> a - 1
res5: scala.collection.immutable.Set[Int] = Set(5, 2, 3, 4)
// 拼接两个集
scala> a ++ Set(6,7,8)
res2: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 2, 7, 3, 8, 4)
// 拼接集和列表
scala> a ++ List(6,7,8,9)
res6: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 9, 2, 7, 3, 8, 4)可变集
定义
可变集合不可变集的创建方式一致,只不过需要提前导入一个可变集类。
手动导入:import scala.collection.mutable.Set
参考代码
scala> val a = Set(1,2,3,4)
a: scala.collection.mutable.Set[Int] = Set(1, 2, 3, 4)
// 添加元素
scala> a += 5
res25: a.type = Set(1, 5, 2, 3, 4)
// 删除元素s
scala> a -= 1
res26: a.type = Set(5, 2, 3, 4)映射
Map可以称之为映射。它是由键值对组成的集合。在scala中,Map也分为不可变Map和可变Map。
不可变Map
语法
val/var map = Map(键->值, 键->值, 键->值...) // 推荐,可读性更好
val/var map = Map((键, 值), (键, 值), (键, 值), (键, 值)...)参考代码
scala> val map = Map("zhangsan"->30, "lisi"->40)
map: scala.collection.immutable.Map[String,Int] = Map(zhangsan -> 30, lisi -> 40)
scala> val map = Map(("zhangsan", 30), ("lisi", 30))
map: scala.collection.immutable.Map[String,Int] = Map(zhangsan -> 30, lisi -> 30)
// 根据key获取value
scala> map("zhangsan")
res10: Int = 30修改
scala> map("zhangsan")=33
<console>:11: error: value update is not a member of scala.collection.immutable.Map[String,Int]
map("zhangsan")=33
可变Map
定义
定义语法与不可变Map一致。但定义可变Map需要手动导入import scala.collection.mutable.Map
scala> val map = Map("zhangsan"->30, "lisi"->40)
map: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30)
// 修改value
scala> map("zhangsan") = 20Map基本操作
基本操作
- 获取值(map(key))
- 获取所有key(map.keys)
- 获取所有value(map.values)
- 遍历map集合
- getOrElse
- 增加key,value对
- 删除key
示例
参考代码
scala> val map = Map("zhangsan"->30, "lisi"->40)
map: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30)
// 获取zhagnsan的年龄
scala> map("zhangsan")
res10: Int = 30
// 获取所有的学生姓名
scala> map.keys
res13: Iterable[String] = Set(lisi, zhangsan)
// 获取所有的学生年龄
scala> map.values
res14: Iterable[Int] = HashMap(40, 30)
// 打印所有的学生姓名和年龄
scala> for((x,y) <- map) println(s"$x $y")
lisi 40
zhangsan 30
// 获取wangwu的年龄,如果wangwu不存在,则返回-1
scala> map.getOrElse("wangwu", -1)
res17: Int = -1
// 新增一个学生:wangwu, 35
scala> map += "wangwu"->35
res22: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30, wangwu -> 35)
// 将lisi从可变映射中移除
scala> map -= "lisi"
res23: scala.collection.mutable.Map[String,Int] = Map(zhangsan -> 30)iterator迭代器
scala针对每一类集合都提供了一个迭代器(iterator)用来迭代访问集合
使用迭代器遍历集合
- 使用iterator方法可以从集合获取一个迭代器
- 迭代器的两个基本操作
- hasNext——查询容器中是否有下一个元素
- next——返回迭代器的下一个元素,如果没有,抛出NoSuchElementException
- 每一个迭代器都是有状态的
- 迭代完后保留在最后一个元素的位置
- 再次使用则抛出NoSuchElementException
- 可以使用while或者for来逐个返回元素
示例
- 定义一个列表,包含以下元素:1,2,3,4,5
- 使用while循环和迭代器,遍历打印该列表
参考代码
scala> var a=List(1,2,3,4,5)
a: List[Int] = List(1, 2, 3, 4, 5)
scala> val ite = a.iterator
ite: Iterator[Int] = non-empty iterator
scala> while(ite.hasNext){println(ite.next)
}
示例
- 定义一个列表,包含以下元素:1,2,3,4,5
- 使用for 表达式和迭代器,遍历打印该列表
参考代码
scala> val a = List(1,2,3,4,5)
a: List[Int] = List(1, 2, 3, 4, 5)
scala> for(i <- a) println(i) -
大数据—Scala
2019-03-01 10:45:40近年来随着大数据的兴起,大数据核心框架Spark和Kafka也受到到广泛关注, Spark底层是Scala实现的, 因此也带火了Scala语言,目前Scala被全球知名公司(如:谷歌、百度、阿里、Twitter、京东等)广泛用于Spark开发。...
-
项目经理成长之路
-
一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)
-
Algorithm_BaekJoon:백준리즘제문-源码
-
【Python-随到随学】FLask第二周
-
质量保证书-源码
-
Samba 服务配置与管理
-
动车组轴温检测系统仿真设计.zip
-
基于电商业务的全链路数据中台落地方案(全渠道、全环节、全流程)
-
零基础一小时极简以太坊智能合约开发环境搭建并开发部署
-
MySQL 备份与恢复详解(高低版本 迁移;不同字符集 相互转换;表
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
朱老师c++课程第3部分-3.5STL的其他容器讲解
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
MMM 集群部署实现 MySQL 高可用和读写分离
-
PowerBI重要外部工具详解
-
DHCP 动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
-
moveit-next:应用程序可构建NLW04 da ROCKETSEAT-源码
-
泊松分布、二项分布与正态分布
-
牛牛量化策略交易
-
Web前端开发规范手册.rar