zoukankan      html  css  js  c++  java
  • scala 数据结构(一):数据结构简介

    1 数据结构特点

    scala集合基本介绍

    1)Scala同时支持不可变集合和可变集合,不可变集合可以安全的并发访问

    2)两个主要的包:

    不可变集合:scala.collection.immutable

    可变集合: scala.collection.mutable

    3)Scala默认采用不可变集合,对于几乎所有的集合类,Scala都同时提供了可变(mutable)和不可变(immutable)的版本

    4)Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质,在Scala中集合有可变(mutable)和不可变(immutable)两种类型。

    可变集合和不可变集合举例

    1)不可变集合:scala不可变集合,就是这个集合本身不能动态变化。(类似java的数组,是不可以动态增长的)

    2)可变集合:可变集合,就是这个集合本身可以动态变化的。(比如:ArrayList , 是可以动态增长的)

    不可变集合继承层次一览图

    小结:

    1.Set、Map是Java中也有的集合

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

    3.我们前面的for循环有一个 1 to 3 , 就是IndexedSeq 下的Vector

    4.String也是属于IndexeSeq

    5.我们发现经典的数据结构比如 Queue 和 Stack被归属到LinearSeq

    6.大家注意Scala中的Map体系有一个 SortedMap,说明Scala的Map可以支持 排序

    7.IndexSeq 和 LinearSeq 的区别 [IndexSeq是通过索引来查找和定位, 因此速度快,比如String就是一个索引 集合,通过索引即可定位] [LineaSeq 是线型的,即有头尾的概念, 这种数据结构一般是通过遍历来查找, 它的价值在于应用到一些 具体的应用场景 (电商网站, 大数据 推荐系统 :最近浏览的10个商品)

    可变集合继承层次一览图

  • 相关阅读:
    hdu 刷题记录
    HDU step by step
    Codeforces Round #260 (Div. 2) B. Fedya and Maths
    Codeforces Round #260 (Div. 2) A. Laptops
    UVALive 6662 TheLastAnt
    UVALive 6661 Equal Sum Sets
    Codeforces Round #253 (Div. 2) A. Anton and Letters
    wikioi 3130 CYD刷题(背包)
    wikioi 1014 装箱问题(背包)
    [转]很特别的一个动态规划入门教程
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/13263587.html
Copyright © 2011-2022 走看看