你好,游客 登录
背景:
阅读新闻

第5章 Scala基本数据结构---List

[日期:2021-09-26] 来源:  作者: [字体: ]

本文来自艾叔编著的《零基础快速入门Scala》免费电子书,添加文末艾叔微信,获取完整版的PDF电子书

5.3  List

ArrayArrayBuffer的每个元素是可以被修改的。但是,有些情况下,需要保证数组元素不能够被修改,例如并发处理的场合,数据的不可更改,可以确保最终结果的正确性,为此,Scala提供了List,它在使用上和Array一样,但它的每个元素一旦赋值,就不可再更改。

ListSpark中应用广泛,例如ListSparkRDD就可以互相转换。

1. 声明List,并赋初值

scala> val numList = List(1,2,3,4,5)

Scala会推断出List中每个元素的类型是Int

numList: List[Int] = List(1, 2, 3, 4, 5)

2. List的值不能被修改

List元素赋值会报错。

scala> numList(2)=6

<console>:14: error: value update is not a member of List[Int]

       numList(2)=6

3. ListArray互相转换

ListArray

scala> val ar = numList.toArray

ar: Array[Int] = Array(1, 2, 3, 4, 5)

ArrayList

scala> ar.toList

res22: List[Int] = List(1, 2, 3, 4, 5)

4. List合并

使用++,可以使得两个List拼接在一起,构成一个新的List

首先,声明两个ListnumList01numList02

scala> val numList01 = List(1, 2, 3)

numList01: List[Int] = List(1, 2, 3)

scala> val numList02 = List(4, 5)

numList02: List[Int] = List(4, 5)

使用++,将numList01numList02拼接在一起,构成新的List

scala> val numList = numList01 ++ numList02

numList: List[Int] = List(1, 2, 3, 4, 5)

使用:::也可以实现同样的功能。

scala> val numList = numList01:::numList02

numList: List[Int] = List(1, 2, 3, 4, 5)

5. Listheadtail

head是指List的第一个元素,tail是指从第二个元素到最后一个元素所组成的List

声明一个List,名字为numList,元素分别是12345

打印head

scala> print(numList.head)

1

打印tail

scala> print(numList.tail)

List(2, 3, 4, 5)

6. 要注意的地方

  • List的元素不能修改,ArrayArrayBuffer的元素可以被修改;
  • 由于实现的机制不一样,ArrayArrayBuffer的访问速度非常快,不管数组的规模有多大,总是能在固定的时间内返回结果,而List访问的速度则取决于List的规模,因此,当数据量大,访问频次高时,建议使用ArrayArrayBuffer
  • Spark编程中,ListRDD可以互相转换;
  • mapflatMapfilter等接口对List同样适用。

 

加艾叔微信,加入Linux(Shell+Zabbix)、大数据(Spark+Hadoop)、云原生(Docker+Kubernetes)技术交流群

 

 

关注艾叔公众号,获取更多一手信息

 

 

收藏 推荐 打印 | 阅读:
相关新闻