zoukankan      html  css  js  c++  java
  • 集合(上)

    1.主要的集合特质

    2.可变和不可变集合

    3.序列

    4.列表

    5.可变列表

    6.集

    7.用于添加或者去除元素的操作符

    8.常用方法

    9.将函数映射到集合

    10.化简、折叠和扫描

    11.拉链操作

    12.迭代器

    13.流

    14.懒视图

    15.与java集合的互操作

    16.线程安全的集合

    17.并行集合。

    1.主要的集合特质

    Seq是一个有先后次序的值的序列,比如数组或列表。举例来说,ArrayBuffer是带下标的,但链表不是。

    Set,无顺序。SortedSet,元素以某种排过序的顺序被访问。

    Map键值对。SortedMap按照键的顺序被访问。

    这个继承层级对java的改进:

    1.映射隶属于同一个继承层级而不是一个单独的层级关系。

    2.IndexedSeq是数组的超类型,但不是列表的超类型,以便于区分。

    集合的创建演示:

     2.可变和不可变集合

    当你握有一个指向scala.collection.immutable.Map的引用时,没人能修改这个映射。

    如果你有的是一个scala.collection.Map,那么,你不能修改它,但别人也许会。

    Scala优先采用不可变集合。scala.collection包中的伴生对象产出不可变的集合。

    举例来说,scala.collection.Map("Helo" -> 42)是不可变的映射。

    3.序列

    Vector是ArrayBuffer的不可变版本,一个带下标的序列,支持快速的随机访问。

    Range表示一个整数序列,比如10,20,30。Range对象并不存储所有值而只是起始值、结束值和增值。你可以用to和until来构造Range对象。

    4.列表

     ::是从右边开始结合的, 9::(4::(2::Nil))

    递归求和

    Scala类库直接求和:

    5.可变列表

    将集合中的负数都变成0:

     如下循环去除每两个元素中的第一个

    除LinkedList外,Scala还提供了一个DoubleLinkedList,区别是它多带一个pre引用。

    注意,如果你想要把列表中的某个节点变成列表中的最后一个节点,你不能将next引用设为Nil,而应该将它设为LinkedList.empty。也不要将它设为null,不然你在遍历该链表时会遇到空指针错误。

    6.集

    添加元素,证明set集合是不重复的。

    遍历不保证顺序:

    如果想让记住元素被插入的顺序

    如果想要按照已排序的顺序来访问集中的元素,用已排序的集合:

     contains方法检查某个集是否包含给定的值

    subsetOf方法检查某个集当中的所有元素是否都被另一个集包含。

    union、intersect和diff方法执行通常的集操作。

    你也可以将联合union写作++,将差异diff写作--。

    7.用于添加或者去除元素的操作符

    一般来说,+用于将元素添加到无先后次序的集合,而+:和:+则是将元素添加到有现有次序的集合的开头或末尾。

    Vector是不可变集合。

    ArrayBuffer是可变集合。

    对于不可变集合,你可以在var上使用+=或:+=,如下:

     

    因为Vector没有+操作符。

    要移除元素,使用-操作符

    ++一次性添加多个元素

    --一次性删除多个元素

    scala提供了许多用于添加和移除元素的操作符。总结如下:

    1.向后(:+)或向前(+:)追加元素到序列当中

    2.添加(+)元素到无先后次序的集合中

    3.用-移除元素

    4.用++或者--来批量添加和移除元素

    5.对于列表,优先使用::和:::

    6.改值操作有+=、++=、-=、--=

    7.对于以及,更多用++、&和--

    8.尽量不用++:、+=: 和 ++=

    8.常用方法

    续上。

    Seq特质在Iterable特质的基础上又额外添加了一些方法。

    续上。

  • 相关阅读:
    放置消息
    MQ基础概念和介绍
    jQuery之双下拉框
    Spring整合JMS——事务管理
    DataTable学习笔记---排序细则、列隐藏
    jquery datatables api
    JavaScript高级 面向对象(2)--调试工具的使用:音乐循环播放
    JavaScript高级 面向对象(1)--添加一个div标签
    VBA学习笔记(9)--生成点拨(1)
    VBA学习笔记(8)--遍历所有文件夹和文件
  • 原文地址:https://www.cnblogs.com/sunnyDream/p/8024328.html
Copyright © 2011-2022 走看看