数据结构:

数组:

数组主要用来存储数据类型相同的元素。数组中某个指定的元素是通过索引来访问的,数组的第一个元素索引为0,最后一个元素的索引为元素总数减1;
Scala中的数组分为定长数组和变长数组,定义定长数组,需要使用new关键字,而定义变长数组时,则需要导包import scala.collection.mutable.ArrayBuffer。

练习:冒泡排序法
将6,-2,5,9,3,8,3,7,7,2由小到大排序.

//冒泡排序def  bubbleSort(arr:Array[Int])={for (i <- 0 to arr.length-1){for (j <- i to arr.length-1){var temp:Int = 0if (arr(i) > arr(j)){temp = arr(i)arr(i) = arr(j)arr(j) = temp}println(arr.mkString(" "))}}arr}
}
复制代码

集合:

在Scala中,集合有三大类: List、Set以及Map,所有的集合都扩展自Iterable特质。Scala 集合分为可变的(mutable)和不可变(immutable)的集合。其中,可变集合可以在适当的地方被更新或扩展,也就是说你可以修改,添加,移除一个集合的元素。相比之下,不可变集合类永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变。

list:

在Scala中,List列表和数组类似:
1.所有元素都具有相同类型,2. 可以存放重复元素。但它又不同于数组:
(1)列表(List)一旦被创建就不能改变其中的元素;
(2)列表(List)底层的数据结构是链接表,而数组是一块连续的内存。
(3)因为列表是不可变的,所以所有操作它的方法或者构造器都会创建一个新的列表。

定义列表有两种方法:
(1)实例化List对象

// 字符串
val fruit: List[String] =List("apples","oranges","pears")
// 整型
val nums: List[Int] = List(1, 2, 3, 4)
// 空
val empty: List[Nothing] = List()
// 二维列表
val dim: List[List[Int]] =List(List(1, 0, 0),List(0, 1, 0),List(0, 0, 1) )复制代码

(2)构造符构造( Nil 和 ::)

// 字符串
val fruit = "apples":: ("oranges":: ("pears" :: Nil))
// 整型
val nums = 1 :: (2 :: (3 :: ( 4 :: Nil)))
// 空列表
val empty = Nil
// 二维列表
val dim = (1 :: (0 :: (0 :: Nil))) ::(0 :: (1 :: (0 :: Nil))) ::(0 :: (0 :: (1 :: Nil))) :: Nil复制代码

list常用方法:

list列表的连接:
使用 ::: 运算符或 List.:::() 方法来连接两个或多个列表。 注意,连接顺序;不同类型的列表是无法拼接的

set:

在Scala中,Set是没有重复对象的集合,所有元素都是唯一的。默认情况下,Scala 使用不可变Set集合,若想使用可变的Set集合,则需要引入 scala.collection.mutable.Set 包。

set常用方法:

Map:

在Scala中,Map是一种可迭代的键值对(key/value)结构,并且键是唯一的,值不一定是唯一的,所有的值都是通过键来获取的。Map中所有元素的键与值都存在一种对应关系,这种关系即为映射。Map有两种类型,可变集合与不可变集合,默认是不可变Map。若需要使用可变的Map集合,则需要引入 import scala.collection.mutable.Map 类。

示例:

常用方法:

遍历map的keys和values:

object MapDemo01 {def main(args: Array[String]): Unit = {val sites = Map("zueb" -> "www.zueb.edu.cn","baidu"->"www.baidu.com","taobao"->"www.taobao.com")for(i<-sites.keys){print("key="+i)println("value="+sites(i))}}
}复制代码

集合中的高阶函数:

map:是指通过一个函数重新计算列表中所有元素,并且返回一个相同数目元素的新列表
foreach:和map类似,但是foreach没有返回值,foreach只是为了对参数进行作用。
filter:过滤移除使得传入的函数的返回值为false的元素
flatten:可以把嵌套的结构展开,或者说flatten可以把一个二维的列表展开成一个一维的列表。
flatMap:结合了map和flatten的功能,接收一个可以处理嵌套列表的函数,然后把返回结果连接起来。
groupBy:是对集合中的元素进行分组操作,结果得到的是一个Map。
reduce:对数据进行规约。
示例:

任务:对List(“hello tom hello jerry”, “hello jerry”, “hello kitty”)进行单词计数。

元组:

Scala的元组是对多个不同类型对象的一种简单封装,它将不同的值用小括号括起来,并用逗号作分隔,即表示元组。Scala的元组是允许重复元素存在的。

元组的基本操作:

获取元组中的第一个值:t._1
获取元组中的第二个值:t._2
定义元组 val t = ("zueb",3.14,65535)
遍历操作: productIterator()方法可以迭代输出元组的所有元素,元素的输出顺序和定义时相同。

访问元组中的每个元素:

Scala语言基础(2)相关推荐

  1. Spark快速大数据分析——Scala语言基础(壹)

    Spark快速大数据分析--Scala语言基础(壹) 文章目录 Spark快速大数据分析--Scala语言基础(壹) 前记 Scala的历史 环境搭建: 1.SBT构建工具和REPL: 2.使用IDE ...

  2. Spark编程基础-(二)Scala语言基础

    1. Scala语言概述 1.1 计算机的起源 阿隆佐邱奇设计了演算的系统,形式系统. 阿兰图灵提出图灵机. 冯诺依曼是计算机体系结构的奠基者.1945年提出计算机体系结构. 图1 冯诺依曼体系结构 ...

  3. Scala语言基础详解,并在IDEA中安装Scala插件

    Scala起源 Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Scala语言的特点: Scala是面向对象的:S ...

  4. 【Scala】Scala语言基础(IDEA创建项目、基本数据类型、range、键盘输入语句)

    文章目录 1 简介 2 特点 3 函数式编程 3 为什么要学习Scala 4 第一个程序 5 使用IDEA创建Scala项目 6 Scala的变量 6.1 var变量 6.2 val变量(推荐) 7 ...

  5. Scala语言学习一——基础语法

    什么是 Scala Scala 是一种多范式的编程语言, 其设计的初衷是要集成面向对象编程和函数式编程的各种 特 性 . Scala 运 行 于 Java 平 台 (Java 虚 拟 机 ) , 并 ...

  6. Scala语言编程基础

    文章目录 Scala语言编程基础 1.实验描述 2.实验环境 3.相关技能 4.知识点 5.实现效果 6.实验步骤 7.总结 Scala语言编程基础 1.实验描述 完成Scala的基本操作,达到对Sc ...

  7. 第3章 Kotlin语言基础 《Kotlin 极简教程》

    2019独角兽企业重金招聘Python工程师标准>>> 第3章 Kotlin语言基础 掌握基础,持续练习 学习任何东西,都是一个由表及里的过程.学习一门编程语言也一样.对于一门编程语 ...

  8. Scala的基础语法(超详细版)

    Scala的基础语法 文章目录 Scala的基础语法 1.声明值和变量 2.数据类型 3.算术和操作符重载 4.控制结构语句 4.1条件分支语句 4.2循环语句 5.方法与函数 5.1方法 5.2 函 ...

  9. 我的全栈之路-C语言基础之C语言概述与开发环境搭建

    我的全栈之路-C语言基础之C语言概述与开发环境搭建 我的全栈之路 1.1 信息技术发展趋势 1.2 浅谈计算机系统架构 1.2.1 计算机系统架构概述 1.2.2 计算机硬件系统 1.2.2 计算机软 ...

最新文章

  1. sqlserver查询自定义的函数
  2. 【mysql dump】 备份原理及脚本
  3. 迪士尼公布最新研究:AR对象可智能地与环境中的物体交互
  4. 专家谈半导体产业前景 并购热还会继续
  5. 海康sdk返回yv12
  6. 动态产生一个TextBox,并使输入的文本靠右对齐
  7. BAT会看上哪样的中小公司程序员?
  8. ABAP 对字符串公式进行计算
  9. springmvc框架自带的异常处理器SimpleMappingExceptionResolver的使用
  10. 牛客 - Dance with a stick(大风车模型)
  11. 使用maven构建项目候,jar包错误的解决办法
  12. js null加法的处理
  13. 编写自己的工具箱 (一)
  14. Android和IOS网页不一致汇总
  15. 对外合作,你的作风就是公司的作风
  16. 软件测试按照各种方式分类
  17. android 自定义menu菜单按键功能
  18. 电商干货!手淘宝贝关键词排名查询
  19. Asterisk 实现语音提示:您呼叫的号码无法接通
  20. ultraEdit32 /uedit32 自定义快捷键/自定义注释快捷键

热门文章

  1. Redis:字符串SET、SETNX、SETEX、PSETEX、GET、GETSET命令介绍
  2. 亚马逊差评怎么删?常用的几种删差评方法介绍
  3. PHP超全局变量之$_GETT和$_POST
  4. 简单介绍函数式编程中的Functor(函子),Applicative(加强版函子),Monad(单子)
  5. 让人变年轻的特效怎么做?教你制作变年轻特效小妙招
  6. 码代码时遇到的小插曲
  7. Review of Software Construction
  8. junit测试service时一直报空指针异常
  9. 各种css hack - 兼容性探测
  10. mysql在线编辑器