Scala学习——集合
Scala集合
一、数组
package top.ruandb.scala.Course04
object ArrayApp { def main(args: Array[String]): Unit = {
//定义数组
val a = new Array[String](5)
//直接定义
val b = Array("java","scala","bash","swift")
val c=Array(1,2,3,4,5,6,7,8,9,10)
//数组中常用方法
println(a.length)
println(c.sum)
println(c.max)
println(c.min)
println(b.mkString(":")) //以:分割成字符串 :java:scala:bash:swift
println(b.mkString("<",":",">")) //结果:<java:scala:bash:swift> //定义变长数组
val d = scala.collection.mutable.ArrayBuffer[Int]()
d += 1 //添加元素
d += (2,3,4,5) //一次性添加多个元素
d ++= Array(6,7,8) //直接添加定长数组元素
println(d.mkString(",")) // 1,2,3,4,5,6,7,8
d.insert(0,0) //向指定位置添加指定元素
println(d.mkString(",")) // 0,1,2,3,4,5,6,7,8
d.remove(0) //删除指定位置的元素
d.remove(0,3) //从某个位置开始,删除n个元素
d.trimEnd(2) //从最后面删除n个元素
d.toArray //转换成定长数组 //遍历数组
for(ele <- d){
println(ele)
}
for(i <- 0 until c.length){
println(i)
} }
}
二、List(有序的,可重复的)
package top.ruandb.scala
object ListApp extends App {
val ln =Nil //定义一个空List
println(ln)
val l = List(1,2,3,4,5,6) //定义List
println(l)
println(l.head) //获取头 (1)
println(l.tail)//获取尾 (2,3,4,5,6)
val l2 = 0 :: l //(0.1,2,3,4,5,6)
println(l2)
val l5 = scala.collection.mutable.ListBuffer[Int]()//可变List
l5 += 1 //添加单个元素
l5 += (2,3,4) //添加多个元素
l5 ++= List(5,6,7,8,9) //添加定长List
print(l5)
l5 -=1 //移除单个元素
l5 -=(2,3,4) //移除多个元素
l5 --=List(5,6,7,8) //移除一个定长List
}
三、Set(无序的,不可重复的)
package top.ruandb.scala.Course04
object SetApp {
def main(args: Array[String]): Unit = {
val set1 = Set(2,2,3,4) //不可变set
println(set1) //(2,3,4)
val set2 = scala.collection.mutable.Set[Int]()//可变set,操作同list类似
set2 += 0
set2 += (1,2,3,4)
set2 ++= Set(5,6)
}
}
四、Map(键值对)
package top.ruandb.scala.Course04
object MapApp {
def main(args: Array[String]): Unit = {
val m1 = Map("jack"-> 10,"lucy"-> 17)//定义Map
println(m1)
println(m1("lucy"))
val m2 = scala.collection.mutable.Map("jack"-> 10,"lucy"-> 17)//可变的map
println(m2)
println(m2("lucy"))
m2("lucy") = 99 // mutable Map 的值可修改
println(m2("lucy"))
val m3 = scala.collection.mutable.HashMap[String , Int]() //定义一个空的Map
m3 += ("jack" -> 19)
m3 += ("lucy" -> 99,"lisi" -> 88)
m3 ++= Map("wangwu" -> 77,"zhaoliu" -> 66)
println(m3)
//遍历Map
for((key,value) <- m3){
println(key,value)
}
for( key<-m3.keySet){
println(key,m3.get(key))
}
}
}
五、Tuple(元组)
package top.ruandb.scala.Course04
object TupleApp {
def main(args: Array[String]): Unit = {
val name = ("jack","lucy","zhangsan","lisi") //定义一个Tuple
println(name._1 + ":" + name._2 + ":" + name._3 + ":" + name._4) //取值
//遍历元组
for(i <-0 until(name.productArity)){
println(name.productElement(i))
}
}
}
六、Option Some None
大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,在Java,它是null。在Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的。
为了让所有东西都是对象的目标更加一致,也为了遵循函数式编程的习惯,Scala鼓励你在变量和函数返回值可能不会引用任何值的时候使用Option类型。在没有值的时候,使用None,这是Option的一个子类。如果有值可以引用,就使用Some来包含这个值。Some也是Option的子类。
Scala学习——集合的更多相关文章
- Scala学习——集合的使用和“_”的一些使用(中)
1.空格加_可以表示函数的原型 命令行代码: scala> def fun1(name:String){println(name)} fun1: (name: String)Unit scala ...
- Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
1:Scala和Java的对比: 1.1:Scala中的函数是Java中完全没有的概念.因为Java是完全面向对象的编程语言,没有任何面向过程编程语言的特性,因此Java中的一等公民是类和对象,而且只 ...
- Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合
前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: :声明val变量:可以使用val来声明变 ...
- Scala学习笔记--集合类型Queue,Set
补充知识:http://www.importnew.com/4543.html 正文开始 scala.collection.immutable scala.collection.mutable 队列Q ...
- Spark基础-scala学习(五、集合)
集合 scala的集合体系结构 List LinkedList Set 集合的函数式编程 函数式编程综合案例:统计多个文本内的单词总数 scala的集合体系结构 scala中的集合体系主要包括:Ite ...
- Scala学习笔记(五)—— 元组和集合
1. 映射 映射Java中的Map,即Key/Value的数据形式 映射的创建,有以下两种方法 scala> val map =Map("Lisa" -> 90 , & ...
- Scala学习十三——集合
一.本章要点 所有集合都扩展自Iterable特质; 集合有三大类,分别为序列,集和映射; 对于几乎所有集合类,Scala都同时提供可变和不可变的版本; Scala列表要么是空的,要么拥有一头一尾,其 ...
- 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习
下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...
- 【大数据】Scala学习笔记
第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java 以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...
随机推荐
- CSS 常见问题笔记
CSS 常见问题 布局 一.盒模型宽度计算 问题:div1 的 offsetWidth 是多少? <style> #div1 { width: 100px; padding: 10px; ...
- halcon——缺陷检测常用方法总结(频域空间域结合)
摘要 缺陷检测是视觉需求中难度最大一类需求,主要是其稳定性和精度的保证.首先常见缺陷:凹凸.污点瑕疵.划痕.裂缝.探伤等. 缺陷检测算法不同于尺寸.二维码.OCR等算法.后者应用场景比较单一,基本都是 ...
- 查找文件与cron计划任务
查找文件 • 根据预设的条件递归查找对应的文件 find [目录] [条件1] [-a|-o] [条件2] ... -type 类型(f文件.d目录.l快捷方式) -name "文档名称 ...
- 【NX二次开发】Block UI 整形
属性说明 常规 类型 描述 BlockID String 控件ID Enable Logical 是否可操作 Group Logical ...
- 07:JS(03)
BOM与DOM操作 # 截至目前为止 我们虽然已经学会了js语法 但是你会发现跟浏览器和html文件还是一点关系没有 """ BOM 浏览器对象模型 Browser Ob ...
- 台达PLC开发笔记(一):台达PLC连接介绍,分别使用485、网口与台达PLC建立连接
前言 台达AS系列,型号为AS322P. 物理设备连接 使用WPL Editor连接PLC 使用RS485口当作RS232口连接PLC 注意: ...
- DOS命令行(2)——Windows磁盘维护与管理
预备知识 1 -- 磁盘 1.磁盘分区 主磁盘分区.扩展磁盘分区.逻辑分区 主磁盘分区是物理磁盘的一部分,它像物理上独立的磁盘那样工作.对于基本启动记录(MBR)的磁盘,在一个基本磁盘上最多可以创建四 ...
- BGP路由技术
BGP路由技术 目录 一.BGP概述 1.1.自治系统 1.2.动态路由分类 1.3.BGP概念 1.4.BGP的特征 1.5.BGP工作原理 二.命令配置 2.1.BGP配置思路 2.2.命令 一. ...
- Excel的布尔值运算
TRUE被当做1进行加减乘除,例:1-TRUE=0. FALSE被当做0进行加减乘除,例:1-FALSE=1.(当做除数时,会因为分母为0返回错误值)
- 春风十里不如你,全新Windows UI 3(WinUI 3) 的第一个实现Project Reunion 0.5
什么是WinUI Windows UI库 (WinUI) 是适用于 Windows 桌面应用程序和 UWP 应用程序的本机用户体验 (UX) 框架. WinUI is a user interface ...