scasla小白初步认识Array2.0

31 阅读4分钟

课堂小结

通过本堂课的学习,我们学习了Array的相关知识,包括如何去定义数组,可变与不可变数组的常见操作,以及多维数组。下面我们一起回顾下本课的主要内容。【请同学回答,并讲解】

1.下面关于不可变数组说法正确的是?

A. 可以随时修改其元素的值。B. 可以改变其大小。
C. 一旦创建,内容和大小都不能改变。D. 不能使用索引访问元素。
2.要创建一个可变 Array,需要( )
A. 使用val关键字和Array类型。
B. 导入scala.collection.mutable.ArrayBuffer并使用它创建。
C. 直接使用Array类型,无需导入其他库。D. 使用var关键字和Array类型。

3.对于一个 Array,获取其长度使用( )
A. size属性。B. length属性。C. count方法。
D. 没有专门的方法或属性获取长度。

  1. 在多维数组中,访问元素需要( )
    A. 使用一个索引。B. 根据维度数量使用相应数量的索引。
    C. 不能直接访问元素。D. 使用特殊的访问方法。

5.grouped方法的作用是( )
A. 将数组元素随机打乱。B. 将数组按照指定大小分组。
C. 对数组元素进行排序。D. 计算数组元素的总和。

课堂小结答案及详细讲解

1. 答案:A

讲解

  • 不可变数组(scala.Array)的核心特性是「长度不可变」,但「元素值可修改」:

    • 选项 A 正确:通过索引(如arr(0) = 100)可修改对应位置的元素值(参考之前代码中arr2(0) = 100的操作);
    • 选项 B 错误:不可变数组一旦创建,大小(长度)固定,无法追加、删除元素(如arr1 += 4会编译报错);
    • 选项 C 错误:混淆了「内容修改」和「长度修改」,不可变数组允许修改元素值,仅限制长度变化;
    • 选项 D 错误:不可变数组支持索引访问(如println(arr(0))),这是数组的基础特性。

2. 答案:B

讲解

  • Scala 中数组的可变 / 不可变由「类型」决定,而非关键字(val/var):

    • 不可变数组:默认scala.Array,无需额外导入,如val arr = Array(1,2,3)
    • 可变数组:需导入scala.collection.mutable.ArrayBuffer,通过该类创建(参考之前代码val arr2 = ArrayBuffer(1,2,3));
    • 选项 A、D 错误:val/var仅控制变量是否可重新赋值(如var arr = Array(1)可改为arr = Array(2)),不影响数组本身的可变特性;
    • 选项 C 错误:直接使用Array创建的是不可变数组,无法直接实现元素追加、删除等可变操作。

3. 答案:B

讲解

  • Scala 数组(含ArrayArrayBuffer)获取长度的核心方式是length属性:

    • 选项 B 正确:如val arr = Array(1,2,3); println(arr.length)会输出3
    • 选项 A:size属性也可获取长度(arr.sizearr.length结果一致),但 Scala 数组的「原生推荐方式」是length,且题目中length是更精准的答案(size更多用于集合框架的统一接口);
    • 选项 C:count方法用于统计满足条件的元素个数(如arr.count(_ > 2)),非获取总长度;
    • 选项 D 错误:数组明确提供length(或size)获取长度。

4. 答案:B

讲解

  • 多维数组的访问规则是「维度数量 = 索引数量」:

    • 例如二维数组val arr = Array(Array(1,2), Array(3,4)),访问第一个子数组的第二个元素需用arr(0)(1)(2 个索引对应 2 维);
    • 选项 A 错误:一个索引仅能访问一维数组(或多维数组的子数组);
    • 选项 C 错误:多维数组支持直接通过索引访问元素;
    • 选项 D 错误:无需特殊方法,直接用多个索引链式访问即可。

5. 答案:B

讲解

  • grouped(n)是数组的常用方法,作用是「按指定大小n将数组分组,返回迭代器」:

    • 示例:val arr = Array(1,2,3,4,5); arr.grouped(2).toArray 结果为 Array(Array(1,2), Array(3,4), Array(5))
    • 选项 A:随机打乱数组用shuffle方法(如arr.shuffle);
    • 选项 C:排序用sortBysortWith方法(如arr.sortBy(x => x));
    • 选项 D:计算总和用sum方法(如arr.sum)。

核心知识点回顾

  1. 不可变数组(Array):长度固定,元素值可通过索引修改,支持length获取长度、索引访问;
  2. 可变数组(ArrayBuffer):需导入对应包,支持+=添加、-=删除、索引修改 / 访问,长度自动适配;
  3. 多维数组:按维度数量传递索引访问元素,本质是「数组的数组」;
  4. 常用方法:grouped(n)分组、sum求和、shuffle打乱、sortBy排序等。