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

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

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

Scala集合有三个基本操作:

head 返回集合第一个元素

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

isEmpty 在集合为空时返回true

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

    有时候可以对元素进行变换,map方法可以将某个函数应用到集合每个元素并进行相应的元素处理
    // 初始化创建List集合映射map
val name = List("Bob", "Michael", "Marry")
println(name.map(_.toUpperCase))
val result = for (n <- name) yield n.toUpperCase
println(result)
// 拼接字符串
def unclase(string: String) = Vector(string.toLowerCase(), string.toUpperCase())
println(name.flatMap(unclase))
  • 与java集合相互转换
import scala.collection.JavaConversions._
需要手动导入,在项目中发现不手动导入这个,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. phantomjs在centos7下的安装

    http://phantomjs.org/download.html 下载 Linux 64-bit 解压 tar jxvf 安装包名称.tar.bz2 pwd 查看路径 ln -sf phantom ...

  2. JS JSON序列化 Ajax form表单

    # JS序列化 a = {"k1":"v1"} #序列化为字符串 类似python json.dumps(a) b = JSON.stringify(a) &q ...

  3. ES6-Generator

    Generator 关键词:状态机,遍历器,同步方式写异步方法 基本概念 形式上,Generator函数是一个普通函数,但是有两个特征. function关键字与函数名之间有一个星号. 二是,函数体内 ...

  4. Oracle EBS 表空间

    -- DATA 这里仅提供查询锁和解锁.有时,锁是正常的,所以杀掉正锁着的进程有一定的风险性. 具体步骤如下: -- 1.0 查看 holder的进程 , 'Holder: ', 'Waiter: ' ...

  5. Python实例---CRM管理系统分析180331

    注意:一个项目基本都设计增删改查,且第一个需要做的就是设计表结构 思维导图: 组件使用: Django  +   bootStrap  +   Jquery 数据库表结构设计: 外键关联: 2种方式, ...

  6. QuickBI助你成为分析师-数据建模(一)

    摘要: 数据集编辑功能界面介绍以及常见问题总结. 在数据集编辑界面可以进行数据建模来更好的展示数据,创建数据集默认将数值类型字段作为度量,日期.字符串等类型作为维度,度量可以根据维度分组展示.下面来介 ...

  7. oracle监听,数据库,oracle服务器的启动和停用

    一.oracle监听,数据库,oracle服务器的启动和停用 使用root用户登录:切换用户su – root/root操作系统,一般只有root用户才有权限去操作系统中安装的oracle数据库服务器 ...

  8. September 06th 2017 Week 36th Wednesday

    I love you not for who you are, but for who I am with you. 我爱你并不是因为你是谁,而是我在你面前可以是谁. I love you just ...

  9. PHP设计模式系列 - 观察者模式

    观察者模式 观察者设计模式能够更便利创建和查看目标对象状态的对象,并且提供和核心对象非耦合的置顶功能性.观察者设计模式非常常用,在一般复杂的WEB系统中,观察者模式可以帮你减轻代码设计的压力,降低代码 ...

  10. 在.NET中操作数字证书(新手教程)

    .NET为我们提供了操作数字证书的两个主要的类,分为为: System.Security.Cryptography.X509Certificates.X509Certificate2类, 每个这个类的 ...