scala04.数据结构(重点)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala04.数据结构(重点)相关的知识,希望对你有一定的参考价值。
参考技术A 4.1主要的集合特质Scala同时支持可变集合和不可变集合,
不可变集合从不可变,可以安全的并发访问。
Scala优先采用不可变集合。
集合主要分为三大类:序列、集、映射
所有集合都扩展自Iterable特质。
对于几乎所有的集合类,Scqla都同时提供了可变和不可变的版本。
Seq是一个有先后次序的值得序列。
IndexedSeq能够通过整形下标快速访问元素。
Set是一个没有先后次序的值集合。
在SortedSort中,元素以某种排过序的顺序被访问。
Map是一组键值对偶,SortedMap按照键的排序访问其中的实体。
如果需要一个定长数组,可以使用Scala中的Array,Array 以java数组的方式实现。
变长数组可以使用ArrayBuffer,Java中有ArrayList
转换动作不会修改原数组,而是产生一个新的数组。
和Java一样,多维数组通过数组的数组来实现,可以用ofDim方法。
Scala数组是通过Java进行实现的
使用scala.collection.convert.AsJavaConverters
或者AsScalaConverters进行转换
映射就是key-value的集合,就类似于Java中的Map。
不可变映射也可以调用方法,只不过产生新的映射。
新映射和老映射共享大部分结构。可变映射是在原映射基础上进行修改。
使用JavaConversions进行转换
元组是不同类型的值的聚集
元组使用_1,_2,_3来访问
元组是从1开始不是0;
元组可用于函数需要返回不止一个值得情况
队列是一个先进先出的结构:
Stack是一个先进后出的结构
如果List为空,用Nil来表示。
集是不重复元素的结合。集不保留顺序,默认是以哈希集实现。
1.向后(:+)或向前(+:)追加元素到序列当中。
2.添加(+)元素到无先后次序的集合中。
3.用-移除元素。
4.用++和--来批量添加和移除元素。
5.对于列表,优先使用::和.
6.改值操作有+=、++=、-=和--=。
7.对于集合,我更喜欢++、--和--=。
8.我尽量不用++:、+:和++-:。
map应用于集合中的每一个元素,并产生转换后的一个新元素。
flatmap同样应用于集合的每一个元素,对于每一个元素产出一个集合,并将集合中的元素串接在一起。
将二元函数应用于集合中的元素
作用于两个集合,将对应的元素合并成一个元组。
通过iterator方法从集合获得一个迭代器
流Stream只有在需要的时候才会去计算下一个元素
:: 返回一个流
view不会缓存数据,每次都要重新计算
Scala类库提供了6个并发特质,可以通过混入这些集合,让集合的操作变成同步的
Scala为了充分使用多核CPU,提供了并行集合(有别于前面的串行集合),用于多核环境的并行计算。
并行集合位于scala.collection.parallel,分immutable和mutable。
通过par关键字将集合转换为一个并行集合
通过ser方法将并行集合转换回串行集合。
注意:在并行任务里面,不要同时更新一个共享变量。
1、如果想在变量名、类名等定义中用保留字,可以用反引号:val‘val'=42
2、这种形式叫中置操作符,A操作符B等同于A.操作符(B)
3、后置操作符,A操作符等同于,A.操作符,如果操作符定义的时候不带()则调用时不能加()
4、前置操作符,+、一、!、~等操作符A等同于A.unary_操作符
5、赋值操作符,A操作符=B等同于A=A操作符B
以上是关于scala04.数据结构(重点)的主要内容,如果未能解决你的问题,请参考以下文章
2021年大数据常用语言Scala(十六):基础语法学习 列表 List 重点掌握
2021年大数据常用语言Scala(十三):基础语法学习 函数 重点掌握
2021年大数据常用语言Scala(十五):基础语法学习 元组 重点掌握