Scala中的集合

水善利万物而不争,处众人之所恶,故几于道

目录

一、集合简介
二、集合关系继承图

一、集合简介

Java中的集合:

Scala中的集合_第1张图片Scala中的集合:

Scala中的集合_第2张图片

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

  • Seq是Java没有的,我们发现List归属到Seq了,因此这里的List就和Java中的List不是同一个概念了

    • Java中List是个接口
    • Scala中List是个类
  • 对于几乎所有的集合类,Scala都同时提供了可变和不可变的版本,分别位于以下两个包
      不可变集合:scala.collection.immutable
      可变集合: scala.collection.mutable

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

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

可变和不可变指的是什么:

  可变和不可变不是说这个集合中元素的值可不可以修改,集合中元素的值修改和可不可变没关系,这里的可变集合指的是,当你对这个集合进行增加或者删除元素的时候,会不会创建新的对象。换句话说就是会不会在原来集合对象的基础上进行操作。

  • 如果是不可变集合的话,你增加或删除元素后,他会重新创建一个新的集合对象返回给你
  • 如果是可变集合的话,你进行增加或删除元素操作的时候,他会在原来集合对象的基础上进行操作,然后把操作后的这个集合再返回给你,这个过程中并没有创建新的集合对象
  • 可变集合和不可变集合都可以对集合中元素的值进行修改

解释:对集合进行修改指的是对集合对象进行增加或者删除元素,修改集合中的元素值只是对集合中的元素值进行了更新,没有对集合对象进行修改。

  • 在大数据场景下,不可变集合用的场景多,因为你不太可能在原来的数据上直接做修改,而是将修改后的数据存到另一个集合中,原来的数据还在。

二、集合关系继承图

Scala中的集合_第3张图片

Scala中的集合_第4张图片

其中,IndexedSeq和LinearSeq的区别是:

  • IndexedSeq使用数组进行存储,通过索引进行查找,速度块
  • LinearSeq通过链表进行存储,有头和尾的概念,通过遍历来查找

Scala中的集合_第5张图片

你可能感兴趣的:(Scala,scala,开发语言,后端,集合简介)