91-143-Scala-集合模式泛型等

51 篇文章 1 订阅
3 篇文章 0 订阅

91-Scala-集合模式泛型等:

Scala 的集合有三大类:序列 Seq、集 Set、映射 Map,所有的集合都扩展自 Iterable特质。

2)对于几乎所有的集合类,Scala 都同时提供了可变和不可变的版本,分别位于以下两个包

不可变集合:scala.collection.immutable

可变集合: scala.collection.mutable

3)Scala 不可变集合,指该集合对象不可修改,每次修改会返回一个新对象,而不会对原对象进行修改。类似于 java 中的 String 对象

4)可变集合,就是这个集合可以直接对原对象进行修改,而不会返回新的对象。类似于 java 中 StringBuilder 对象

不可变集合集成图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q6ZVEpKk-1670683798953)(png/image-20210917172548375.png)]

可变继承图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O4lq5UHq-1670683798954)(png/image-20210917172708800.png)]

建议:在操作集合的时候,不可变用符号,可变用方法

1、不可变数组,创建方式一val arr1 = new Array [Int] (10),创建方式二val arr1 = Array(1, 2)

2、可变数组,val arr01 = ArrayBuffer [Any] (3, 2, 5) Test02_ArrayBuffer,访问等同不可变数组。一样样的。

3、不可变数组与可变数组的转换,arr1.toBuffer //不可变数组转可变数组。arr2.toArray //可变数组转不可变数组

4、多维数组定义,val arr = Array.ofDim [Double] (3,4)二维数组中有三个一维数组,每个一维数组中有四个元素

5、list列表,默认不可变 Test04_List

6、可变列表,基本api等同list

7、set集合,默认不可变,无序,不可重复,等同java。可变和不可变看包的引用。Test06_ImmutableSet

8、Map 和 Java 类似,也是一个散列表,它存储的内容也是键值对(key-value)映射。Test08_ImmutableMap

9、元组,将多个无关的数据封装为一个整体,称为元组。注意:元组中最大只能有 22 个元素。Test10_Tuple

10、集合常用操作和属性,长度,大小,循环遍历,迭代器,生成字符串,是否包含

11、衍生集合,获取集合的头,集合的尾,集合最后一个数据,集合初始数据(不包含最后一个),反转,取前(后)n 个元素,去掉前(后)n 个元素,并集,交集,差集,拉链,滑窗

12、集合简单操作,求和,求乘积,最大值,最小值,排序 Test13_SimpleFunction

13、集合高级函数,过滤,转化/映射(map),扁平化(合并,打散,最小的元素合并),扁平化+映射,分组(group),简化(归约),折叠Test14_HighLevelFunction_Map,

14、队列,特点是先进先出。进队和出队的方法分别为 enqueue 和 dequeue。

15、并行集合,为充分使用多核 CPU,提供了并行集合(有别于前面的串行集合),用于多核环境的并行计算。

16、模式匹配,switch case。匹配常量,类型,模式守卫加条件,列表,数组,原表,对象,样例类Test02_MatchTypes,Test03,Test04

17、偏函数Test05_PartialFunction,
在这里插入图片描述

18、异常处理机制,无编译时异常,具体异常建议写前面,模式匹配,可直接throw一个异常或者通过注解

19、隐士转换,当编译器第一次编译失败的时候**,**会在当前的环境中查找能让代码编译通过的方法,用于将类型进行转换,实现二次编译,隐式参数,隐式类,隐式方法,隐式值比默认优先级高,同一作用域只能有一个同类型的隐式参数

20、隐式解析机制,先在当前代码作用域下查找隐式实体(隐式方法、隐式类、隐式对象,一般是这种情况)。若第一条找隐式实体失败,会继续在隐式参数的类型的作用域里查找。类型的作用域是指与该类型相关联的全部伴生对象以及该类型所在包的包对象

21、泛型,协变和逆变Test03_Generics,泛型的上下限制

class MyList[+T]{ //协变

}

class MyList[-T]{ //逆变

}

class MyList[T] //不变

协变:Son 是 Father 的子类,则 MyList[Son] 也作为 MyList[Father]的“子类”。

逆变:Son 是 Father 的子类,则 MyList[Son]作为 MyList[Father]的“父类”。

不变:Son 是 Father 的子类,则 MyList[Father]与 MyList[Son]“无父子关系”。

泛型的上下限的作用是对传入的泛型进行限定。

Class PersonList[T <: Person]{ //泛型上限}

Class PersonList[T >: Person]{ //泛型下限}

学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值