• 数组  /  映射  /  元组

    一、数组

    1、定长数组

    声明数组的两种形式:

    声明指定长度的数组 val 数组名= new Array[类型](数组长度)

      

    提供数组初始值的数组,无需new关键字

      

    Scala声明数组时,需要带有Array类名,且使用 () 来指明长度或提供初始值序列。

    在JVM中,Scala的Array以Java数组的方式实现。如arr在JVM中的类型对应java.lang.String[],charArr对应char[]。

    2、变长数组

      

    ArrayBuffer,全称scala.collection.mutable.ArrayBuffer,类似于Java中的ArrayList和C++中的vector,是长度可变数组类型的结构,称为数组缓冲。

    通过:val 名 = ArrayBuffer[类型]() 来声明,声明ArrayBuffer时需要指明类型。

    通过 += 操作符来添加元素或序列,++= 操作符来拼接数组。

    【在ArrayBuffer的尾端添加或删除元素是一个高效的操作。】 ArrayBuffer还支持在指定位置插入、删除元素。

    ArrayBuffer到数组的转换: toArray方法

      

    3、数组遍历

    通过for循环来遍历数组

      

    指定遍历数组的步长——通过until(上界, 步长)

      

      

    通过reverse函数逆序遍历数组:

      

    4、可以通过 for循环+yield 来获得新的数组或ArrayBuffer

      

      

    通过for+yield操作数组或ArrayBuffer之后将得到新的数组或ArrayBuffer。

    5、操作数组/数组缓冲常用函数

      

    求和、求最大最小值、数组排序。通过sorted函数对数组或ArrayBuffer排序时,返回的是一个新的数组或ArrayBuffer,原有的不变。

    可以直接对数组调用排序算法,但是不能对ArrayBuffer排序。

      

    quickSort是直接修改原数组,而sorted方法是返回新数组

    6、多维数组

    Scala中的多维数组同Java中一样,多维数组都是数组的数组。

    通过 Array.ofDim[类型](维度1, 维度2, 维度3,....)来声明多维数组,如声明二维数组;

      

      从二维数组的初始化中,我们可以看到,多维数组在Scala中也是数组的数组。

    通过 Array[ Array[Int]](维度1) 来声明数组,可以声明不规则数组;

      

      多维数组是数组的数组,按照这种性质来声明多维数组,如例子中的二维数组,声明时,需要指定最外围的数组大小。

    【注:可以通过scala.collection.JavaConversions包中隐式转换方法来实现Scala容器类与Java中类的转换。】

    二、映射

    1、映射构造

    对偶,即名值对。可以通过 -> 操作符来定义对偶, 名->值 运算的结果是( 名, 值 );

      

    也可以声明对偶形式的变量

      

    映射是由对偶构成的,映射是对偶的集合。

    声明不可变映射,直接使用Map来声明时,默认是不可变映射类型。

      

      【注: 不可变映射维持元素插入顺序。】

    声明可变映射(scala.collection.mutable.Map)

      

      【注:放入可变映射中的值并未按照放入顺序来排序的。】

      通过for循环来修改可变Map中的值;

      

      【注:映射可变、不可变指的是整个映射是否可变,包括元素值、映射中元素个数、元素次序等。】

    声明空映射

      直接通过 new Map[类型1, 类型2]() 来定义映射会报错,因为Map是抽象的,无法实例化。

      定义空映射时,需要指定映射的实现类,通过new来定义;

      

      分别定义不可变映射与可变映射。注,直接使用 new HashMap定义时会报错。

    2、映射常用操作

    判断映射中是否含有某个键: map.contains(键值)

      

    使用 += 向可变映射中添加元素或拼接映射

      

    使用 -= 移除可变映射中的键及对应元素

      

    不可变映射可通过 + 操作符返回一个新的不可变映射;不可变映射可通过 - 操作符返回一个新的不可变映射;

      

    映射遍历

      

    获取映射的键集合keySet和值集合

      

      通过映射的 keySet 方法可以获得映射的由键值构成的集合;通过 values 方法可以获得映射的值集合的Interable对象,应用于循环中。

      Scala的keySet / values 方法类似于Java中的映射方法。

    3、Scala中映射的底层实现要么基于哈希表,要么基于平衡树,其中基于平衡树的映射内部是有序的。

      

      Scala目前基于平衡树的映射只提供了不可变版本。

      【注:构建可变有序映射可借助Java的TreeMap。】

    4、可变映射中,若穴ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq5ub2ozqyz1tSqy9iy5cjry7PQ8rXE07PJ5L/Jzai5/UxpbmtlZEhhc2hNYXChozwvcD4KPHA+NaGizai5/XNjYWxhLmNvbGxlY3Rpb24uSmF2YUNvbnZlcnNpb25zLm1hcEFzU2NhbGFNYXC/yb2rSmF2YbXETWFw16q7u86qU2NhbGHA4NDNtcRNYXCju82ouf1zY2FsYS5jb2xsZWN0aW9uLkphdmFDb252ZXJzaW9ucy5tYXBBc0phdmFNYXC/yb2rU2NhbGG1xNOzyeTXqru7zqpKYXZhwODQzbXE07PJ5KGjPC9wPgo8cD42oaJ0b01hcLe9t6g8L3A+CjxwPqGhoaHKudPDdG9NYXC3vbeov8m9q7bUxbzX6bPJtcS8r7rP16q7r86q07PJ5KGjPC9wPgo8cD6hoaGhPGltZyBzcmM9"http://www.it165.net/uploadfile/files/2014/0920/20140920190600125.png" alt="\" />

    三、元组

    1、元组是不同类型的值的聚集;对偶是最简单的元组。

    2、元组表示

      通过将不同的值用小括号括起来,即表示元组。

      

      上例中元组的类型就是 (Int, Double, Char, String) ;元组中可以存放不同类型的值。

    3、元组访问

    元组中的元素称为组元。可以通过 _1、 _2 、_3 的形式来访问对应下标的组元。

      

      【注:元组中组元下标从1开始。】

    通过模式匹配来访问元组中的值

      

      忽略不需穴ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq1xNa1PC9zdHJvbmc+oaPU2sSjyr3GpcXkyrGjrM2ouf0gXyCjqM3yxNzGpcXkt/ujqcC0zqqyu9Do0qq78cih1rW1xNfp1KrVvM67o6zDv7j2IF8gvfa/ydLUzqrSu7j21+nUqtW8zruhozwvcD4KPHA+oaGhoTxpbWcgc3JjPQ=="http://www.it165.net/uploadfile/files/2014/0920/20140920190600129.png" alt="\" />

    4、元组可用于函数返回多个值的情形

      

      上例中,函数定义返回值类型为元组 (Int, String);

      

Scala学习数组/映射/元组相关推荐

  1. scala学习手记5 - 元组与多重赋值

    假定要在一个方法中返回多个值.比如需要返回一个人的名.姓和邮箱地址.在Java中最常用的方法是定义一个Person类,其中包括相对应的字段:还有些不常用的方法就是返回一个集合或数组,拿到结果后再进行循 ...

  2. Scala学习之映射(Map)

    一.映射的重点内容: 1.映射中,前面的值称之为"键",后面的值称之为"值" 2.映射是对偶的集合,由两个值组成,他们不一定为同一种类型. 3.通过键查询时,映 ...

  3. Scala学习第五天数组

    2019独角兽企业重金招聘Python工程师标准>>> package com.learn.scalaimport scala.collection.mutable.ArrayBuf ...

  4. ZYNQ7000 学习(二十八)C语言二维数组映射到显示器的原理分析以及实现实例 学

    C语言二维数组映射到显示器的原理分析以及实现实例 学习内容 本课将 在上一课的基础上 修改一下 AXI_LITE_SLAVE外设,不再使用寄存 器而直接对 VGA显存里的数据进行进行写操作,达到以数组 ...

  5. 2021年大数据常用语言Scala(十四):基础语法学习 数组  重点掌握

    目录 数组  重点掌握 定长数组 变长数组 遍历数组 数组常用算法 数组  重点掌握 scala中数组的概念是和Java类似,可以用数组来存放一组数据.scala中,有两种数组,一种是定长数组,另一种 ...

  6. Scala学习--《Scala编程》

    2019独角兽企业重金招聘Python工程师标准>>> Scala学习手册--可伸缩的语言(随着使用者的需求而成长)  第一章:基本概念 Scala=FP+OO.静态语言 兼容性.简 ...

  7. Scala学习笔记(黑马视频)

    目录 2.Scala第二章节 2.1 输出语句和分号 2.1.1 输出语句 2.1.2 分号 2.2 Scala中的常量 2.2.1 概述 2.2.2 分类 2.2.3 代码演示 2.3. Scala ...

  8. Scala学习(一) 快速入门

    学习Spark就要学习Scala,今天开始快速学习Scala.直接在这里做笔记了. 文章目录 1 Scala基础与语法 1.1 基本数据类型 1.2 Scala变量声明 1.3 算术操作符介绍 1.4 ...

  9. Scala学习笔记(一)

    Scala学习笔记(一) 一.Scala简介 二.Scala安装与配置 1. 安装JDK 2. 安装Scala SDK 3. 安装IDEA插件 三.Scala解释器 1. 启动Scala解释器 2. ...

  10. Scala学习笔记-方便查找使用 为Spark学习打基础

    Scala学习 注意 伊始 为什么是Scala 网课 环境 电脑环境安装 关于版本的声明 我的环境和版本 IDEA插件安装 IDEA关联Scala源码 基础部分1 文档注释和生成 字符串的三种输出 变 ...

最新文章

  1. Python从入门到精通- 什么是NumPy? (上)
  2. 【学习笔记】关于DOM4J:使用DOM4J解析XML文档
  3. 链路负载均衡: 高性能和高安全的同时实现
  4. Netflix Zuul与Nginx的性能对比
  5. ip变更会影响账号登陆吗_【教程】PUBG账号被盗导致封禁申诉解封教程
  6. 【Oracle】SCOPE=MEMORY|SPFILE|BOTH
  7. Vue2.0用户权限控制解决方案
  8. PCL之估计整个点云表面法向量
  9. js获取php多维数组,vue.js,多维数组_vuejs2.0 多维数组操作?,vue.js,多维数组 - phpStudy...
  10. Java正则表达式判断一个字符串是否是ipv4地址
  11. 用typedef给结构体一个别名
  12. Rust : RUST_BACKTRACE=1错误提示
  13. vscode使用svn插件
  14. pygame基础教程
  15. excel函数去重_excel去重函数
  16. NLP 实战 (5) | 标签、技能树和知识图谱
  17. html动态表格用数组填充,自动填充数组中的HTML表格
  18. php gif 透明背景,php缩放gif和png图透明背景变成黑色的解决方法,缩放png_PHP教程...
  19. 完全掌握Python: 在一门课程中使用 Python 编程所需的一切 | Complete Python Mastery
  20. 时间轴:确保ADAM电影如期进行

热门文章

  1. Cannot complete this action,please try again. Correlation ID :bd640a9d-4c19-doff-2fe0-6ce1104b59ae
  2. c++ idea 插件_推荐 33 个 IDEA 最牛配置,写代码太爽了
  3. java爬虫微信公众号信息_微信公众号爬虫项目(reptile)
  4. STC学习:导航按键与数字按键综合控制数码管
  5. c++输出的值精确到小数点后5位_直击灵魂——圆周率小数点后3位到12411亿位到底有啥用?...
  6. 3d slicer调整窗宽窗位_3D游戏模型制作技巧,掌握这些技术你也能进鹅厂!
  7. html初识教学反思,五年级长方体的认识教学反思
  8. oracle双机python连接_Python 连接 Oracle 示例
  9. 栈解决中缀表达式转后缀表达式_第3章栈和队列,中缀表达式转换成后缀表达式...
  10. java word_java输出word解决方案