美文网首页ScalaScala
scala-基本数据结构

scala-基本数据结构

作者: 神奇的腿 | 来源:发表于2016-09-21 12:12 被阅读603次

    1. 数组


    任何对于对象的值参数应用都将被转换为对apply方法的调用。与之相似的是,当对带有括号并包括一到若干参数的变量赋值时,编译器将对括号里的参数(索引值)和等号右边的对象执行调用。

    以数组为例:

    val greetString = new Array[String](3)
    greetString(0) = "Hello"
    greetString(1) = ","
    greetString(0) = "world!\n"
    for (i <- 0 to 2)
        print(greetString(i))
    

    上段代码的实际调用为:

    val greetString = new Array[String](3)
    greetString.update(0, "Hello")
    greetString.update(1, ", ")
    greetString.update(2, "world!/n")
    for (i <- 0.to(2))
        print(greetString.apply(i))
    

    用于生产环境的赋值方法为:

    val numNames = Array("zero", "one", "two")
    val o = Array(1, "one")
    

    2. 列表


    val oneTwoThree = List(1, 2, 3)
    

    2.1 两个方法:

    • :::
      实现两个列表叠加并返回新列表的功能,要求左右操作数都是列表
    • ::
      把新元素组合到现有列表前端。

    注意:方法名以:结尾,右操作数是方法的调用者。所以使用::时一定要把列表放到右面。

    Nil是空列表的简写,一个建立列表的写法如下:

    val oneTwoThree = 1 :: 2 :: 3 :: Nil
    

    List没有提供append操作是因为随着列表边长,append的耗时将线性增长,而用::做前缀操作则仅耗用固定时间。

    3. 元组


    val pair = (99, "str")
    

    需要说明的是,元组的索引基于1。

    3.1 元组与列表的异同:

    • 元组可以包含不同类型的元素,而列表不可(我试了试貌似可以?求解答)
    • 两者元素都不可变

    4. 集(set)和映射(map)


    scala里的集合(collection)分为可变和不可变两种类型,没有特别指定导入包时,默认为不可变类型。可变集合将元素加入自身,不可变集合则创建并返回新集合。故,在定义集合时要注意val, var的选择。

    5. 其他


    数组元素可变。列表、元组元素不可变。

    相关文章

      网友评论

        本文标题:scala-基本数据结构

        本文链接:https://www.haomeiwen.com/subject/lckaettx.html