Scala学习七:数组
2017-05-18 09:11
211 查看
Scala学习七:数组
Scala中有 变长数组 和 定长数组。Scala的数组以Java数组实现。Scala 数组大小 及 访问数组元素 用"小括号 ()" 修饰。 Java 数组大小 及 访问数组元素 用 "中括号 []" 修饰。 Scala 不指定数组大小,用元素直接初始化数组 用 "小括号()" 修饰。 Java 不指定数组大小,用元素直接初始化数组 用 "大括号{}" 修饰
Scala代码:
// 定长数组:scala.ArrayArray val arr = new Array[Int](10) arr(0) = 1 val arr2 = Array(1,2,3) println(arr2(2)) // 变长数组: scala.collection.mutable.ArrayBuffer val arrBuf = new ArrayBuffer[String](10) // 变长数组可以不指定数组大小 val arrBuf2 = new ArrayBuffer[String] val arrBuf3 = ArrayBuffer("a","b","c")
Java代码:
int[] arr = new int[10]; arr[0] = 0; String[] arrStr = new String[10]; String[] arrStr2 = new String[]{"a","b","c"}; System.out.println(arrStr2[2])
在数组尾部插入元素 或 集合操作是高效的。
但是在数据中间插入 元素 或 集合 操作是低效的,因为所有元素都必须被向后平移。
Scala中数组迭代有3种方式:
println("------- ArrayBuffer [foreach] ") arrBuf2.foreach(e=>{ println(" element = " + e) }) println("------- ArrayBuffer [for until] ") // for(a <- 0.until(3)){ // 0 until 3 '等于==' 0.until(3) for(a <- 0 until 3){ println(arrBuf2(a)) } println("------- ArrayBuffer [for element] ") // 不用下标,直接访问数组元素 for(a <- arrBuf2){ println(a) }
对数组的很大比例的基本都是在排序,求和,Scala支持对数据进行方便快捷的操作。
println("------- Array [init] ") val arr = new Array[Int](10) val arr2 = Array(2, 1, 3) println("------- Array [sum] ") println(" sum = " + arr2.sum) println(" max = " + arr2.max) println(" min = " + arr2.min) // 排序并不修改原始版本,而是产生一个新集合 println(" sort = " + arr2.sorted.mkString(","))
Scala中可以排序的数据必须支持比较操作,包括数字,字符串,或其他带有Ordered物质的数据。
Scala常用的几种排序:
sortBy: sortBy[B](f: (A) ⇒ B)(implicit ord: math.Ordering[B]): List[A] 按照应用函数f之后产生的元素进行排序
sorted: sorted[B >: A](implicit ord: math.Ordering[B]): List[A] 按照元素自身进行排序
sortWith: sortWith(lt: (A, A) ⇒ Boolean): List[A] 使用自定义的比较函数进行排序
参考:Scala 数组常用的几种排序
相关文章推荐
- 【Scala学习笔记】类型参数化数组
- scala 学习笔记(02) 元组Tuple、数组Array、Map、文件读写、网页抓取示例
- Scala学习笔记(二)--数组、列表、元祖和scala脚本编写及读取文件
- Scala学习第十三弹 数组遍历和数组转换
- Scala学习第十二弹 数组
- scala学习六: 数组的使用
- scala 学习(六)——使用filter创建数组
- Scala入门学习笔记三--数组使用
- Scala入门学习笔记三--数组使用
- Scala学习——数组/映射/元组
- Scala学习之数组的进一步认识
- scala学习笔记(三)数组
- Scala学习第五天 Scala数组操作实战详解
- Scala学习笔记(六)----数组,循环,排序
- scala学习之路:元组数组集合
- Scala学习第五天:数组的基本操作,数组的进阶操作和多维数组
- Scala学习笔记--数组
- scala学习(数组,元组)
- Spark学习使用笔记 - Scala篇(2)- 数组
- 快学Scala学习笔记及习题解答(1-4基础、控制、函数、数组、元组和映射)