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学习——集合的更多相关文章

  1. Scala学习——集合的使用和“_”的一些使用(中)

    1.空格加_可以表示函数的原型 命令行代码: scala> def fun1(name:String){println(name)} fun1: (name: String)Unit scala ...

  2. Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、

    1:Scala和Java的对比: 1.1:Scala中的函数是Java中完全没有的概念.因为Java是完全面向对象的编程语言,没有任何面向过程编程语言的特性,因此Java中的一等公民是类和对象,而且只 ...

  3. Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合

    前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: :声明val变量:可以使用val来声明变 ...

  4. Scala学习笔记--集合类型Queue,Set

    补充知识:http://www.importnew.com/4543.html 正文开始 scala.collection.immutable scala.collection.mutable 队列Q ...

  5. Spark基础-scala学习(五、集合)

    集合 scala的集合体系结构 List LinkedList Set 集合的函数式编程 函数式编程综合案例:统计多个文本内的单词总数 scala的集合体系结构 scala中的集合体系主要包括:Ite ...

  6. Scala学习笔记(五)—— 元组和集合

    1. 映射 映射Java中的Map,即Key/Value的数据形式 映射的创建,有以下两种方法 scala> val map =Map("Lisa" -> 90 , & ...

  7. Scala学习十三——集合

    一.本章要点 所有集合都扩展自Iterable特质; 集合有三大类,分别为序列,集和映射; 对于几乎所有集合类,Scala都同时提供可变和不可变的版本; Scala列表要么是空的,要么拥有一头一尾,其 ...

  8. 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习

    下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...

  9. 【大数据】Scala学习笔记

    第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java  以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...

随机推荐

  1. Google Pixel 超分辨率--Super Resolution Zoom

    Google Pixel 超分辨率--Super Resolution Zoom Google 的Super Res Zoom技术,主要用于在zoom时增强画面细节以及提升在夜景下的效果. 文章的主要 ...

  2. LeetCode---105. 从前序与中序遍历序列构造二叉树 (Medium)

    题目:105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [3,9,20,15,7 ...

  3. MQTT 协议是个啥?这篇文章告诉你!

    文章首发于我的公众号「程序员cxuan」,欢迎大家关注呀- 说到做到! 之前有位读者给我留言说想要了解一下什么是 MQTT 协议,顺便还把我夸了一把,有点不好意思啦. 那么读者的要求必须要满足啊,所以 ...

  4. RobotFramework + Python 自动化入门 三 (Web自动化)

    在<RobotFramwork + Python 自动化入门 一>中,完成了一个Robot环境搭建及测试脚本的创建和执行. 在<RobotFramwork + Python 自动化入 ...

  5. 每日三道面试题,通往自由的道路4——JVM篇

    茫茫人海千千万万,感谢这一秒你看到这里.希望我的面试题系列能对你的有所帮助!共勉! 愿你在未来的日子,保持热爱,奔赴山海! 每日三道面试题,成就更好自我 昨天既然你有讲到字符串常量池是吧,那这样吧 1 ...

  6. [Django REST framework - 序列化组件、source、钩子函数]

    [Django REST framework - 序列化组件.source.钩子函数] 序列化器-Serializer 什么是rest_framework序列化? 在写前后端不分离的项目时: 我们有f ...

  7. App免责声明

    一切移动客户端用户在下载并浏览xxxAPP软件时均被视为已经仔细阅读本条款并完全同意.凡以任何方式使用本APP,或直接.间接使用本APP资料者,均被视为自愿接受本网页相关声明和用户服务协议的约束. x ...

  8. css中的毛玻璃(不是透明度) 简单文档

    其实毛玻璃很简单 只需要在css中加入 backdrop-filter:blur(8px); 8px是模糊力度 注意:使用该方法前需要设置背景不能是透明(如果是显示这个元素下面的图像记得半透明,例子就 ...

  9. 基于C#的socket编程的TCP同步实现

    该博客源著地址https://www.cnblogs.com/sunev/archive/2012/08/05/2604189.html 一.摘要 总结一下基于C#的TCP传输协议的涉及到的常用方法及 ...

  10. codeforces 830E dp

    大致题意: n场比赛,k个钱币.赢一场获得一个钱币,输一场失去一个钱币,一旦钱币数量为2k个或者0个,就马上离开比赛.给出n个长度字符串,由W,D,L,?四个字符组成,W表示赢,L表示输,D表示平局, ...