您的位置:首页 > 其它

Scala 深入浅出实战经典 第5讲:Scala数组操作实战详解

2015-08-12 01:16 302 查看
一、课程前导

DT大数据梦工厂的微信公众号是DT_Spark,每天都会有大数据实战视频发布,请您持续学习。

Scala 深入浅出实战经典(1-81讲)完整视频、PPT、代码下载:

百度云盘:http://pan.baidu.com/s/1c0noOt6

腾讯微云:http://url.cn/TnGbdC

360云盘:http://yunpan.cn/cQ4c2UALDjSKy  访问密码 45e2

Scala是最为重要的大数据语言,该视频每天还在持续跟新中,预计大约有140讲,请您根据上述视频彻底掌握Scala实战技术。

《第五天:数组的基本操作,数组的进阶操作和多维数组》的视频地址:

酷6:http://v.ku6.com/show/i_eM1qMUhXcLgC_0m45Ydg...html?from=my

51cto:http://edu.51cto.com/lesson/id-66501.html

搜狐视频:http://my.tv.sohu.com/us/158901506/80445472.shtml

最后,王家林老师个人的微信是18610086859

二、课程内容

注:下面的笔记源于王家林老师的第4讲:For与Function进阶实战、Lazy的使用视频和《快速Scala》书。

第五天:数组的基本操作,数组的进阶操作和多维数组

信息来源于 DT大数据梦工厂微信公众账号:DT_Spark

1. 数组的基本操作

 1)定长数组

       数组的概念和C,JAVA中的数组是一样的, 都是存储同一种类型的元素。定长数组存储一定长度的数组。

   //声明一个数组,类型为Int,元素个数为10,元素的默认值为0。

   val nums = new Array[Int](10)

  

   //声明一个数组,类型为String元素个数为10,元素的默认值为null。

   val a = new Array[String](10)

  

   //声明一个数组,初始化第一个元素为'Hello',第二个元素为"World",通过类型推到,判断出数组的类型为String.

   val s =  Array("Hello" , "World")

   //设置数组中存储的第一个元素为"Good"

   s(0) = "Good"

 

   for (elem <- s) println(elem)

       打印代码,得到如下输出结果:

   Good

   World

 

   Scala有一个强大的工具Scala WorkSheet,打开 ScalaIDE 选择 File -> New -> Scala WorkSheet, 建立一个名字为 ScalainAction 的 Scala WorkSheet。

        保存以下代码,就可以看到自动交互的部分。

   package com

   import scala.collection.mutable.ArrayBuffer

   object ScalainAction {

    val b = ArrayBuffer[Int]()       

   }

 

  2)缓存数组:ArrayBuffer

   使用ArrayBuffer前,需要引入“scala.collection.mutable.ArrayBuffer”包。

   

   操作:

   i += 1 //在缓存数组的末尾添加一个元素

   i += (1,3,6) //在缓存数据的末尾添加一个集合

   i ++= Array(7,11) //在缓存数组的末尾添加一个集合

   

 缓存数组存储的元素可以随时改变。

 b.insert(2,6) 在缓存数组第2个位置插入一个元素值为6。

 b.insert(2,7,8,9) 在缓存数组第2个位置插入多个元素值为7,8,9.。

 b.remove(2) 删除缓存数组中第2个元素。

 b.remove(2,3) 在缓存数组的第2个位置,连续删除3个元素。

 b.toArray

 

 

 2. 进阶操作

  2.1)yield操作

          对数组进行遍历,每个元素乘以2在赋值给新的数组,这里要注意关键字 yield, 必须加上否则 2* elem就是表达式

    def main(args: Array[String]): Unit = {

 

    val c = Array(2, 3, 5, 7, 11)

    val result = for (elem <- c) yield 2 * elem

 

    for (elem <- result)

      println(elem);

    }

2.2) Array().sum

        还可以直接对数组进行操作,比如汇总sum操作。  比如求数组Array(1,2,3,4)的总和= 1 +2+3+4 = 10

 

 

2.3) ArrayBuffer().max

      在比如求缓存数组中最长的字符串操作。

 

 

2.4)   ArrayBuffer().sorted

     对缓存数组进行排序,默认情况下是升序排序。

也可以使用 scala.util.Sorting.quickSort()方法对Array进行快速排序。

 

2.5)  Array().mkString()

通过Array.mkString()可以很方便的把数组转换为字符串,分隔符可以自定义。

3. 多维数组

  先给数组第3行,第2列赋值,在把数组第 [Int][i+1]的值赋值给数组第[i]个

  val matrix = Array.ofDim[Double](3, 4)

  matrix(2)(1) = 42

 

  val triangle = new Array[Array[Int]](10)

  for (i <- 0 util triangle.length)

    triangle(i) = new Array[Int](i + 1)

 

    附上学习视频,供大家参考:

  http://pan.baidu.com/s/1qWqVAoO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息