scala-基本数据结构

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. 其他


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

你可能感兴趣的