遍历集合可以使用迭代器iterator的那套迭代方式。Seq是一个有先后次序的序列,比如数组或列表。IndexedSeq可以通过下标进行任意元素的访问。例如ArrrayBuffer。

Set是一组没有先后次序的值,在SortedSet中,元素以某种排过序的顺序被访问。

Map是一组(键,值)对偶,SortedMap按照键的顺序访问实体

Scala集合有三个基本操作:

head 返回集合第一个元素

tail 返回一个集合,包含除了第一元素之外的其他元素

isEmpty 在集合为空时返回true

  • 可变和不可变的集合
  1. Scala同时支持可变的和不可变的集合,不可变的集合从不改变,因此不可变集合是线程安全的集合,例如有:scala.collection.mutable.Map,也有scala.collection.immutable.Map。它们有一个共有的超类型scala.collection.Map
  2. Scala优先采用不可变集合。scala.collection包中的伴生对象产出不可变的集合例如:scala.collection.Map("hello" -> 42)是一个不可变的映射
  • 添加元素和移除元素的操作符
  1. 向后(:+)或向前(+:)追加元素到序列当中
  2. 添加(+)元素到无先后次序的集合中
  3. 用-移除元素
  4. 用++和--来批量添加和移除元素
  5. 对于列表优先使用::和:::
  6. 改值操作有+=,++=,-=,--=
  7. 对于集合,使用++,&和--
  8. 尽量不用++:,+=:和++=:
  1. def main(args: Array[String]): Unit = {
  2. // 初始化构建元素个数为4的集合对象
  3. val v = Vector(1, 2, 3, 4)
  4. // 添加集合后添加5(新建集合添加5)
  5. println(v :+ 5)
  6. // 集合前添加0(新建集合添加0)
  7. println(5 +: v)
  8. // 初始化构建高效数组缓存
  9. val array = ArrayBuffer(1, 2, 3, 4)
  10. // 添加元素5
  11. println(array += 5)
  12. // 删除元素1
  13. println(array -= 1)
  14. // 初始化Set集合对象
  15. val number = Set(1, 2, 3)
  16. // 添加4元素(新建set集合添加4)
  17. println(number + 4)
  18. // 添加4元素(新建set集合移除3)
  19. println(number - 3)
  20. // 使用++添加多个set元素(结果为无序的)
  21. println(number ++ Set(4, 5, 6))
  22. }
  23. }
  24. 可以使用++一次添加多个元素,也可以使用--一次删除多个元素
  • 将函数映射到集合

    有时候可以对元素进行变换,map方法可以将某个函数应用到集合每个元素并进行相应的元素处理
  1. // 初始化创建List集合映射map
  2. val name = List("Bob", "Michael", "Marry")
  3. println(name.map(_.toUpperCase))
  4. val result = for (n <- name) yield n.toUpperCase
  5. println(result)
  6. // 拼接字符串
  7. def unclase(string: String) = Vector(string.toLowerCase(), string.toUpperCase())
  8. println(name.flatMap(unclase))
  • 与java集合相互转换
  1. import scala.collection.JavaConversions._
  2. 需要手动导入,在项目中发现不手动导入这个,idea编辑器编译器会报错

常见转换api

隐式函数 java集合类型
asjavaEnumeration Enumeration
setAsJavaSet Set
mapAsJavaMap Map
bufferAsJavaList List

Scala集合学习总结的更多相关文章

  1. Scala入门学习笔记三--数组使用

    前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...

  2. Scala集合笔记

    Scala的集合框架类比Java提供了更多的一些方便的api,使得使用scala编程时代码变得非常精简,尤其是在Spark中,很多功能都是由scala的这些api构成的,所以,了解这些方法的使用,将更 ...

  3. Scala函数式编程(三) scala集合和函数

    前情提要: scala函数式编程(二) scala基础语法介绍 scala函数式编程(二) scala基础语法介绍 前面已经稍微介绍了scala的常用语法以及面向对象的一些简要知识,这次是补充上一章的 ...

  4. Scala集合操作

    大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说: 1.数据集合:会涉及数据的搜集.存储等,搜集会有很多技术,存储技术现在比较经典方案是使用Hadoop,不过也很多方案采用Kafka.  ...

  5. 转:深入Java集合学习系列:HashSet的实现原理

    0.参考文献 深入Java集合学习系列:HashSet的实现原理 1.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set 的迭代顺序:特 ...

  6. Spark:scala集合转化为DS/DF

    scala集合转化为DS/DF case class TestPerson(name: String, age: Long, salary: Double) val tom = TestPerson( ...

  7. Scala集合常用方法解析

    Java 集合 : 数据的容器,可以在内部容纳数据  List : 有序,可重复的  Set : 无序,不可重复  Map : 无序,存储K-V键值对,key不可重复 scala 集合 : 可变集合( ...

  8. 2019/3/4 java集合学习(二)

    java集合学习(二) 在学完ArrayList 和 LinkedList之后,基本已经掌握了最基本的java常用数据结构,但是为了提高程序的效率,还有很多种特点各异的数据结构等着我们去运用,类如可以 ...

  9. 2019/3/2周末 java集合学习(一)

    Java集合学习(一) ArraysList ArraysList集合就像C++中的vector容器,它可以不考虑其容器的长度,就像一个大染缸一 样,无穷无尽的丢进去也没问题.Java的数据结构和C有 ...

随机推荐

  1. 为什么不要使用 select * from xxx (oracle 亲测)

    打开已用时间set timing on;create table users(id number(20), name varchar2(20), password varchar2(20));inse ...

  2. 回归JavaScript基础(五)

    主题:介绍引用类型Object.Array. 在上一章中,作者就在说变量的值的时候,提到过引用类型这个概念.JavaScript中存在基本类型和引用类型,其中引用类型很重要,这里有许多我们需要注意的东 ...

  3. 机器学习vs深度学习及其知识点

    人工智能如火如荼,可以遇见这将会是近10年最大的创新机会.那么到底什么是人工智能? 机器学习和神经网络什么关系? 卷积神经网络中的矩阵内积是怎么计算的?

  4. 优化 ExpressRoute 路由

    当你有多个 ExpressRoute 线路时,可以通过多个路径连接到 Azure.结果就是,你所采用的路由可能不是最理想的 - 也就是说,你的流量可能会经历较长的路径才能到达 Azure,而 Azur ...

  5. python处理excel(一):读

    功能:读取一个excel里的第2个sheet,将该sheet的内容全部输出. #coding=utf8 import xlrd def read_excel(): workbook = xlrd.op ...

  6. 关于打开现有项目时数据库连接配置遇到的问题 连接字符串中的数据源值指定未安装的SQL Server的实例。要解决此问题,可选择安装匹配的SQL Server实例或修改连接字符串中的数据源值

    最近在看红皮书<ASP.NET MVC 5 高级编程>时,为了更好理解,边看书,边打开源代码查看,在VS(Visual Studio 2015)中将源代码打开,发现数据库连接是关闭的,本想 ...

  7. SweetAlert插件 弹框插件

    sweetalert是一个漂亮的弹窗 中文网址: http://mishengqiang.com/sweetalert/ 它需要2个文件:sweetalert-dev.js和sweetalert.cs ...

  8. CSS背景图片垂直居中center不起效果完美解决

    背景图片居中CSS如下 background:#4892fe url("<%=basePath%>/img/login_bg.jpg") no-repeat cente ...

  9. November 10th 2016 Week 46th Thursday

    Live like you were dying, love because you do. 生如将逝,爱自本心. When faced with our darkest hour, hope is ...

  10. November 7th 2016 Week 46th Monday

    A friend is one who knows you and loves you just the same. 朋友是懂你并爱你的人. Friendship means inclusion, l ...