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语言的特点 ...
随机推荐
- Win10 下python_appium的Android手机自动化环境搭建
前提: 已经安装好了Java环境,且配置了环境变量 已经安装python3.8.2,已经安装pycham. 一.安装appium_client ,pycham中也需要安装 二.安装node.js(需要 ...
- 【NX二次开发】Block UI 微定位
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- 【NX二次开发】Block UI 通过浏览选择文件
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- sql:group by和 max
通过group by,having,max实现查询出每组里指定列中最大的内容 例如:我需要实现的功能是 获取每个模块中点击量最大的内容(表中有许多内容,内容里) 我写的查询语句如下 查询结果如下: 然 ...
- SpringBoot数据访问(二) SpringBoot整合JPA
JPA简介 Spring Data JPA是Spring Data大家族的一部分,它可以轻松实现基于JPA的存储库.该模块用于增强支持基于JPA的数据访问层,它使我们可以更加容易地构建使用数据访问技术 ...
- Mybatis 中经典的 9 种设计模式!面试可以吹牛了
虽然我们都知道有23个设计模式,但是大多停留在概念层面,真实开发中很少遇到.Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式. Mybatis至少 ...
- 一次SQL查询优化原理分析(900W+数据,从17s到300ms)
有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fetching: ...
- SpringMVC 进阶版
请求限制 一些情况下我们可能需要对请求进行限制,比如仅允许POST,GET等... RequestMapping注解中提供了多个参数用于添加请求的限制条件 value 请求地址 path 请求地址 m ...
- 关于kubernetes的十七个实验(二)
写在开头 时隔好几天,结束了毕业设计中期答辩,更新第二节. 实验二与Kubeadm Kubeadm解决了以下问题:处理TLS加密配置,部署核心Kubernetes组件并确保其他节点可以轻松加入集群. ...
- 我是如何用 ThreadLocal 虐面试官的?
我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复[资料],即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板. Thr ...