Scala语言基础(2)
数据结构:
数组:
数组主要用来存储数据类型相同的元素。数组中某个指定的元素是通过索引来访问的,数组的第一个元素索引为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)相关推荐
- Spark快速大数据分析——Scala语言基础(壹)
Spark快速大数据分析--Scala语言基础(壹) 文章目录 Spark快速大数据分析--Scala语言基础(壹) 前记 Scala的历史 环境搭建: 1.SBT构建工具和REPL: 2.使用IDE ...
- Spark编程基础-(二)Scala语言基础
1. Scala语言概述 1.1 计算机的起源 阿隆佐邱奇设计了演算的系统,形式系统. 阿兰图灵提出图灵机. 冯诺依曼是计算机体系结构的奠基者.1945年提出计算机体系结构. 图1 冯诺依曼体系结构 ...
- Scala语言基础详解,并在IDEA中安装Scala插件
Scala起源 Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Scala语言的特点: Scala是面向对象的:S ...
- 【Scala】Scala语言基础(IDEA创建项目、基本数据类型、range、键盘输入语句)
文章目录 1 简介 2 特点 3 函数式编程 3 为什么要学习Scala 4 第一个程序 5 使用IDEA创建Scala项目 6 Scala的变量 6.1 var变量 6.2 val变量(推荐) 7 ...
- Scala语言学习一——基础语法
什么是 Scala Scala 是一种多范式的编程语言, 其设计的初衷是要集成面向对象编程和函数式编程的各种 特 性 . Scala 运 行 于 Java 平 台 (Java 虚 拟 机 ) , 并 ...
- Scala语言编程基础
文章目录 Scala语言编程基础 1.实验描述 2.实验环境 3.相关技能 4.知识点 5.实现效果 6.实验步骤 7.总结 Scala语言编程基础 1.实验描述 完成Scala的基本操作,达到对Sc ...
- 第3章 Kotlin语言基础 《Kotlin 极简教程》
2019独角兽企业重金招聘Python工程师标准>>> 第3章 Kotlin语言基础 掌握基础,持续练习 学习任何东西,都是一个由表及里的过程.学习一门编程语言也一样.对于一门编程语 ...
- Scala的基础语法(超详细版)
Scala的基础语法 文章目录 Scala的基础语法 1.声明值和变量 2.数据类型 3.算术和操作符重载 4.控制结构语句 4.1条件分支语句 4.2循环语句 5.方法与函数 5.1方法 5.2 函 ...
- 我的全栈之路-C语言基础之C语言概述与开发环境搭建
我的全栈之路-C语言基础之C语言概述与开发环境搭建 我的全栈之路 1.1 信息技术发展趋势 1.2 浅谈计算机系统架构 1.2.1 计算机系统架构概述 1.2.2 计算机硬件系统 1.2.2 计算机软 ...
最新文章
- sqlserver查询自定义的函数
- 【mysql dump】 备份原理及脚本
- 迪士尼公布最新研究:AR对象可智能地与环境中的物体交互
- 专家谈半导体产业前景 并购热还会继续
- 海康sdk返回yv12
- 动态产生一个TextBox,并使输入的文本靠右对齐
- BAT会看上哪样的中小公司程序员?
- ABAP 对字符串公式进行计算
- springmvc框架自带的异常处理器SimpleMappingExceptionResolver的使用
- 牛客 - Dance with a stick(大风车模型)
- 使用maven构建项目候,jar包错误的解决办法
- js null加法的处理
- 编写自己的工具箱 (一)
- Android和IOS网页不一致汇总
- 对外合作,你的作风就是公司的作风
- 软件测试按照各种方式分类
- android 自定义menu菜单按键功能
- 电商干货!手淘宝贝关键词排名查询
- Asterisk 实现语音提示:您呼叫的号码无法接通
- ultraEdit32 /uedit32 自定义快捷键/自定义注释快捷键
热门文章
- Redis:字符串SET、SETNX、SETEX、PSETEX、GET、GETSET命令介绍
- 亚马逊差评怎么删?常用的几种删差评方法介绍
- PHP超全局变量之$_GETT和$_POST
- 简单介绍函数式编程中的Functor(函子),Applicative(加强版函子),Monad(单子)
- 让人变年轻的特效怎么做?教你制作变年轻特效小妙招
- 码代码时遇到的小插曲
- Review of Software Construction
- junit测试service时一直报空指针异常
- 各种css hack - 兼容性探测
- mysql在线编辑器