scala集合操作
来源:互联网 发布:软件接口测试方法 编辑:程序博客网 时间:2024/06/05 05:54
大数据技术是数据的集合及对数据集合的操作技术的统称:
1.数据集合:会涉及数据的搜集、存储等,搜集有很多技术,存储现在比较经典的是使用Hadoop,也有很多情况使用Kafka
2.对数据集合的操作技术:目前全球最火的是spark
3.spark的框架实现语言是scala,首选的应用程序开发语言也是scala,所以scala对集合,以及集合的操作至关重要
4.可能是巧合spark中对数据的操作算子和scala中对集合的操作算子是一样的
scala中数据的创建和操作:
1.最原始的数组创建方式形如:
val array =newArray[Int](5)
整数默认为0,赋值array(0)= 10
2.最常用的创建方式形如:
val array2 =Array[Int](1,2,3,4,5)//[Int]这个泛型类型是可以去掉的,是因为scala是可以类型推断
通过Array类名传入参数的方式来创建数组实例,背后的实现是调用Array的工厂方式模式apply来构建出数组及数组内容
val array3 =Array.apply(1,2,3,4,5)
3.关于Array本身在底层的实现是借助了JVM平台上的Java语言数组的实现,是不可变的
4.如果想改变数组,可以使用ArrayBuffer这个可变数组
import scala.collection.mutable.ArrayBuffer
val arrayBuffer =ArrayBuffer[Int]()
arrayBuffer +=1
arrayBuffer += (2,3,4,5,6,7,8,9,10)
arrayBuffer ++=Array(1,2,3)
5.关于ArrayBuffer增加元素,默认情况下是在ArrayBuffer末尾增加元素的,效率非常高
6.也可以在指定位置添加元素
arrayBuffer.insert(arrayBuffer.length,100,1000)
7.删除元素
arrayBuffer.remove(arrayBuffer.length -1)
8.变成固定长度,当需要多线程并发操作时,把ArrayBuffer转换成Array就非常重要,即使是Array,其本身虽然不可变动(元素不可删减),但是我们可以修改Array中的每个内容,所以多线程操作时,还是必须考虑并发写的问题
arrayBuffer.toArray
9.遍历
for(item <- array)println(item)
for(i <-0to array.length) print(array(i) + " ")
for(i <-0until array.length) print(array(i) + " ")
for(i <-0until (array.length,2))print(array(i) +" ")//步长为2
//通过range设定步长,Range(起始值,最小值,步长),其中不包括最小值
for(j <-Range(10,0,-2)) println(j) // 10 8 6 4 2
//从后向前遍历
for(i <- (0toarray.length).reverse ) println(i)
println(array.filter{x=>x %2== 0}.mkString(""))
println(array.filter{_ %2== 0}.mkString(""))
println(array.filter{_ %2== 0}.map{_*10}.mkString(""))
10.如果想在已经有的数组的基础上通过作用于每个元素来生成新的元素构成的新数组,则可以通过yield语法来完成,这个在大数据中意义重大
val arrayAddOne =for(item <- array)yielditem +1
println(arrayAddOne.mkString(""))
(1)它是在不修改已经有的Array的内容的基础上完成的,非常适合于大数据的处理;
(2)在大数据中处理中,例如spark中业务操作的核心思想就是类似于yield,来通过使用function对每个元素操作获取新的元素构成新的集合,其实就是新的RDD,例如MapPartionsRDD
11.集合的操作,可以通过算子,例如使用filter来过滤需要条件的算子,例如使用map来进行每一个元素的加工
- Scala集合操作指南
- Scala集合一些操作
- Scala数据集合操作
- scala集合操作
- Scala集合操作
- Scala 集合数组操作
- scala集合操作
- scala集合数据操作
- scala集合操作
- scala中的集合操作
- Scala集合操作实战
- Scala之旅-集合操作
- Scala集合操作简单说明
- scala基础---集合操作汇总
- Scala集合操作—List
- Scala集合操作—Set
- Scala集合操作—数组
- Scala集合操作—Map
- OpenCV学习笔记:MAT解析
- 网页特殊符号HTML代码大全
- 我的第一个博客
- Spring入门篇之Spring注入
- 第十四周项目3——是否二叉排序树?
- scala集合操作
- 第十四周项目三
- Java编程:下载指定 JDK 版本的“Samples and demos”
- position属性absolute与relative 详解 不为人知的(fixed)绝对定位(fixed相对于浏览器窗口=不动的div)
- Andorid 内存溢出与内存泄露,几种常见导致内存泄露的写法
- tabHost遇到的坑
- android View滑动冲突解决
- 系统自带分享的一些问题以及自定义功能
- 第十三周项目4-Floyd算法验证