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语言的特点 ...
随机推荐
- 笔记-13-多线程 Thread方法 线程安全 生产者和消费者 死锁和阻塞 练习
题目1 编写程序,创建两个线程对象,一根线程循环输出"播放背景音乐",另一根线程循环输出"显示画面";要求: 1: 1个线程使用Runnable接口的匿名内部类 ...
- 菜鸟刷题路:剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格 class Solution { public String replaceSpace(String s) { StringBuilder str = new St ...
- SpringBoot2配置文件application.yaml
源码基于SpringBoot 2.4.4 1.认识配置文件 1.1 配置文件的加载 创建SpringBoot项目的时候,会自动创建一个application.properties文件,该文件是Spri ...
- raft 图解 (秒懂)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
- org.junit.Assert(断言)
org.junit.Assert(断言) Assert是断言的意思,可以理解为"猜测",如果猜测错误,则抛出java.lang.AssertionError异常. 引入jar包 ...
- 什么是Mirai僵尸网络
1.什么是Mirai? Mirai是恶意软件,能够感染在ARC处理器上运行的智能设备,将其转变为远程控制的机器人或"僵尸"并组成网络.这种机器人网络称为僵尸网络,通常用于发动DDo ...
- Redis 底层数据结构之跳跃表
文章参考 <Redis 设计与实现>黄建宏 Redis(2) 跳跃表 跳跃表 跳跃表 skiplist 是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节 ...
- Redis 底层数据结构之String
文章参考:<Redis设计与实现>黄建宏 Redis 的 string 类型底层使用的是 SDS(动态字符串) 实现的, 具体数据结构如下: struct sdshdr { int len ...
- RabbitMQ重试机制
消费端在处理消息过程中可能会报错,此时该如何重新处理消息呢?解决方案有以下两种. 在redis或者数据库中记录重试次数,达到最大重试次数以后消息进入死信队列或者其他队列,再单独针对这些消息进行处理: ...
- 解决spring boot中文乱码问题
在开发或学习当中,我们不可避免的会碰到中文乱码的问题(好想哭,但还是要保持微笑!) 今天,在学习spring boot中碰到了中文乱码问题. 首先,看了一下workspace是不是设置utf-8默认字 ...