Scala(10) -- scala的数组、元组、列表、集、映射、迭代器、函数式编程

本文详细介绍了Scala编程中的数组,包括定长和变长数组的特性、语法和操作示例。接着讲解了元组的格式和访问方式,列表的不可变和可变类型及其常用操作,如遍历、合并、排序等。还探讨了集的不可变和可变性,以及映射的基本操作。最后,阐述了迭代器的概念和使用,以及函数式编程中的foreach、map、flatMap、filter、sort等方法的应用。

1. 数组

1.1 概述

数组就是用来存储多个同类型元素的容器, 每个元素都有编号(也叫: 下标, 脚标, 索引), 且编号都是从0开始数的.
Scala中, 有两种数组,一种是定长数组,另一种是变长数组.

1.2 定长数组

1.2.1 特点

  1. 数组的长度不允许改变.
  2. 数组的内容是可变的.

1.2.2 语法

  • 格式一 : 通过指定长度定义数组
val /var 变量名 = new Array[元素类型](数组长度)
### 数组列表元组的区别与用法 #### 1. 数组 (Array) 数组是一种基本的数据结构,用于存储相同类型的多个元素。以下是关于数组的一些重要特性: - **特点**: 数组中的每个元素都有一个索引,通常从 `0` 开始计数[^2]。在某些编程语言中,数组可以分为定长数组和变长数组。定长数组一旦创建后其大小不可更改,而变长数组则允许动态调整大小。 - **定义方式**: - 使用固定长度的方式定义数组: ```scala val arrayFixedLength = new Array[Int](5) // 创建一个长度为5的整型数组 ``` - 使用具体元素来初始化数组: ```scala val arrayWithElements = Array(1, 2, 3, 4, 5) // 初始化带有元素的数组 ``` - **操作方法**: 数组支持多种内置的操作方法,比如遍历 (`forEach`)映射转换 (`map`) 等功能[^1]。然而需要注意的是,这些方法仅适用于真正的数组对象而非类数组对象。 --- #### 2. 列表 (List) 列表也是一种常见的线性数据结构,在许多高级编程语言中有广泛的应用。它类似于数组但具有更灵活的功能- **特点**: 列表通常是基于链表实现或者作为动态数组存在。它们能够轻松地执行插入删除等复杂操作,并且大多数情况下提供了丰富的迭代器接口以及函数式编程的支持。 - **主要区别于数组的地方在于灵活性**, 即使是在运行期间也可以方便地修改内容而不必担心内存分配问题. - **示例代码**(Scala为例): ```scala val listExample = List(1, 2, 3, 4) // 不可变列表 var mutableList = scala.collection.mutable.ListBuffer() // 可变列表 mutableList += 5 // 向可变列表添加新项 ``` - **优势**: 对于频繁增删场景下的性能表现优于传统意义上的静态数组;另外由于现代框架往往提供大量针对集合类型优化后的算法库所以开发效率也会有所提升。 --- #### 3. 元组 (Tuple) 元组是用来保存不同类型值的一个简单容器形式。尽管它可以看作是一个小型版本的记录(record),但它并不具备像其他两种结构那样强大的扩展能力。 - **特点**: 元组的主要特征之一就在于它的异构性质——即同一个实例内部可能包含完全不同的数据类别组合而成的整体单位。而且不像常规意义上面向对象设计模式下所强调的对象封装概念一样严格区分字段访问权限等问题上显得更加自由随意些。 - **使用案例**: 当我们需要传递少量关联性强却又彼此独立的信息给某个过程调用时非常合适。 ```scala val tupleSample = ("Alice", 30, true) // 创建三元组 println(tupleSample._1) // 输出第一个成员:Alice ``` --- ### 总结对比表格 | 属性/类型 | 数组(Array) | 列表(List) | 元组(Tuple) | |-----------|--------------------------------------|---------------------------------------|-------------------------------------| | 存储 | 多个同种类型 | 支持多态 | 异质 | | 长度 | 固定或变化(取决于实现) | 动态 | 常量 | | 访问速度 | O(1) | 平均O(n)(对于链接版实现而言) | O(1) | | 修改难度 | 较难(特别是定长情况) | 易 | 几乎不可能直接变更 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

erainm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值