Scala集合学习总结
遍历集合可以使用迭代器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)是一个不可变的映射
- 添加元素和移除元素的操作符
 
- 向后(:+)或向前(+:)追加元素到序列当中
 - 添加(+)元素到无先后次序的集合中
 - 用-移除元素
 - 用++和--来批量添加和移除元素
 - 对于列表优先使用::和:::
 - 改值操作有+=,++=,-=,--=
 - 对于集合,使用++,&和--
 - 尽量不用++:,+=:和++=:
 
  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集合学习总结的更多相关文章
- Scala入门学习笔记三--数组使用
		
前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...
 - Scala集合笔记
		
Scala的集合框架类比Java提供了更多的一些方便的api,使得使用scala编程时代码变得非常精简,尤其是在Spark中,很多功能都是由scala的这些api构成的,所以,了解这些方法的使用,将更 ...
 - Scala函数式编程(三) scala集合和函数
		
前情提要: scala函数式编程(二) scala基础语法介绍 scala函数式编程(二) scala基础语法介绍 前面已经稍微介绍了scala的常用语法以及面向对象的一些简要知识,这次是补充上一章的 ...
 - Scala集合操作
		
大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说: 1.数据集合:会涉及数据的搜集.存储等,搜集会有很多技术,存储技术现在比较经典方案是使用Hadoop,不过也很多方案采用Kafka. ...
 - 转:深入Java集合学习系列:HashSet的实现原理
		
0.参考文献 深入Java集合学习系列:HashSet的实现原理 1.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set 的迭代顺序:特 ...
 - Spark:scala集合转化为DS/DF
		
scala集合转化为DS/DF case class TestPerson(name: String, age: Long, salary: Double) val tom = TestPerson( ...
 - Scala集合常用方法解析
		
Java 集合 : 数据的容器,可以在内部容纳数据 List : 有序,可重复的 Set : 无序,不可重复 Map : 无序,存储K-V键值对,key不可重复 scala 集合 : 可变集合( ...
 - 2019/3/4  java集合学习(二)
		
java集合学习(二) 在学完ArrayList 和 LinkedList之后,基本已经掌握了最基本的java常用数据结构,但是为了提高程序的效率,还有很多种特点各异的数据结构等着我们去运用,类如可以 ...
 - 2019/3/2周末 java集合学习(一)
		
Java集合学习(一) ArraysList ArraysList集合就像C++中的vector容器,它可以不考虑其容器的长度,就像一个大染缸一 样,无穷无尽的丢进去也没问题.Java的数据结构和C有 ...
 
随机推荐
- Oracle 查询状态 自检
			
Tips:fnd_lobs表会保存我们上传的一些文件和Form界面“文件“-“导出”的文件.如果不定期清理了话,会出现文件上传失败,或者是导出按钮可以点击,但是点击完以后没有任何反应.这个时候我们应该 ...
 - l2dct
			
http://paste.ubuntu.com/15664711/ diff -crbB ns-allinone-2.35/ns-2.35/queue/red.cc ns-2.35/queue/red ...
 - Mysqlbinlog工具及导出数据并转换编码导入
			
2014 - binlog是通过记录二进制文件方式来备份数据,然后在从二进制文件将数据恢复到某一时段或某一操作点. 1.使用mysqlbinlog工具来恢复 Mysqlbinlog日志如何开启? 在m ...
 - MySQL Flashback 工具介绍
			
MySQL Flashback 工具介绍 DML Flashback 独立工具,通过伪装成slave拉取binlog来进行处理 MyFlash 「大众点点评」 binlog2sql 「大众点评(上海) ...
 - 转:c# 安装包制作
			
.net Windows服务程序和安装程序制作 最近项目中用到window服务程序,以前没接触过,比较陌生,花了两天的时间学习了下,写了个简单的服务,但在制作安装程序的时候,参照网上很多资料,却都制作 ...
 - Hadoop HBase概念学习系列之HBase里的存储数据流程(二十三)
			
这个,很简单,但凡是略懂大数据的,就很清楚,不多说,直接上图.
 - JAVA容器全面总结
			
1 容器体系图 简图: 详图: 2 基础 2.1 Iterator接口 迭代器. 具有的能力:后向迭代.删除. 2.2 Iterable接口 表示一个类具有迭代 ...
 - C# 页面调用控制台应用程序
			
var rootPath = System.Configuration.ConfigurationManager.AppSettings["rootPath"]; Process. ...
 - B/S网络概述
			
B/S网络架构 随着Web2.0时代的到来,互联网的网络架构已经从传统的C/S架构转变到更加方便快捷的B/S架构.这样的转化简化了人们上网的方式,也加速了互联网行业的发展. B/S架构的好处: 1.客 ...
 - 洛谷 P2045 方格取数加强版【费用流】
			
题目链接:https://www.luogu.org/problemnew/show/P2045 题目描述 给出一个n*n的矩阵,每一格有一个非负整数Aij,(Aij <= 1000)现 ...