Scala学习笔记
一、映射Map六、Set集合
1、Set集合是没有重复的对象集合,所有元素都是唯一的。
2、不可变Set集合
#创建空集合 val/var 变量名= Set[类型]() Scala > val sets = Set[Int]() #创建非空Set集合 val/var 变量名 = Set[类型](元素1,元素2,元素3) Scala> val a = Set(5,2,1,3,2,4,6)
3、可变Set集合
import scala.collection.mutable.Set val b = Set(5,1,2,3,4)4、获取Set集合的大小以及循环输出Set集合数据
5、添加删除元素
![]()
七、List列表
1、List是Scala中最重要的、最常用的数据结构
List列表是可以保存重复的值,也是有先后顺序的。
2、不可变List (列表元素和长度都不可变)
val/var 变量名 = List(元素1,元素2,元素3)
//使用Nil创建空的不可变列表
val/var 变量名 = Nil
![]()
3、可变List
4、toList 将一个可变列表生成不可变列表,原列表不变
5、toArray 将一个可变列表生成不可变数组,原列表不变
八、函数式编程
1、 foreach遍历
foreach(f: (A) => unit) : unit
2、映射 - map
3、扁平化映射 - flatMap
![]()
4、过滤 - filter
![]()
5、排序 - sort
sorted
sortBy
sortWith
![]()
6、分组 - groupBy
![]()
7、聚合 - reduce
![]()
8、折叠 - fold
九、高阶函数
1、使用函数作为参数,或者返回值为函数值的“函数”或者“方法”,称之为高阶函数。
2、函数值作为参数
3、匿名函数
4、柯里化
![]()
![]()
5、闭包
函数里面引用外部类成员变量叫做闭包
十、Scala面向对象编程
1、类的定义
scala是支持面向对象的,也有类和对象的概念
2、类的构造器
1)、主构造器:是指类名的后面跟上一系列元素
2)、辅助构造器:在类中使用this来定义。
3)、示例
![]()
十一、Scala面向对象编程之对象
1、scala中的Object
Scala中没有java中的静态成员,如果用到static变量、static方法,就要用到scala中的单例对象object
定义单例对象和定义类一样,只是把class换成object
(1). 使用object 单例对象名定义一个单例对象,可以用object作为工具类或者存放常量
(2). 在单例对象中定义的变量,类似于Java中的static成员变量
(3). 在单例对象中定义的方法,类似于Java中的static方法
(4). object单例对象的构造代码可以直接写在花括号中
(5). 调用单例对象的方法,直接使用单例对象名.方法名,访问单例对象的成员变量也是使用单例对象名.变量名
(6). 单例对象只能有一个无参的主构造器,不能添加其他参数
2、 scala中的伴生对象
在同一个scala文件中,有一个class和object同名,那么就称这个object是class的伴生对象,class是object的半生类。
伴生对象和半生类的最大特点就是可以相互访问。
![]()
3、Scala中object的apply方法
4、Scala中object的main 方法
十二、Scala面向对象编程之继承
1、继承extends
2、 override和super
3、isInstanceOf和asInstanceOf
4、getClass和classOf
5、访问修饰符
Java中的访问控制,同样适用于scala,可以在成员前面添加private/protected关键字来控制成员的可见性。但在scala中,没有public关键字,任何没有被标为private或protected的成员都是公共的。
private[this]修饰符:被修饰的成员只能在当前类中被访问。或者可以理解为:`只能通过this.来访问`(在当前类中访问成员会自动添加this.)。
protected[this]修饰符:被修饰的成员只能在当前类和当前类的子类中被访问。也可以理解为:当前类通过**this.**访问或者子类通过**this.**访问
6、 调用父类的constructor
7、抽象类
8、匿名内部类