33.List的一阶函数操作代码实战详解
来源:互联网 发布:淮南大数据小镇规划 编辑:程序博客网 时间:2024/06/06 12:48
一、List的drop、take、splitAt、apply、indices、toString、mkString等实战
把两个List组拼起来,列表和列表连接用三个冒号的连接操作符,元素和列表连接用两个冒号的连接操作符
println(List(1,2,3,4) ::: List(5,6,7) ::: List(8,9)) println(List(1,2,3,4) ::: (List(5,6,7) ::: List(8,9))) println(List(1,2,3,4).length)输出:
List(1, 2, 3, 4, 5, 6, 7, 8, 9)
List(1, 2, 3, 4, 5, 6, 7, 8, 9)
4
List的相关操作方法:
val bigdata = List(0,1,2) println(bigdata.last) //List最后一个元素 println(bigdata.init) //List中除去最后一个元素,其余元素的集合 println(bigdata.reverse) //把List元素反转过来 println(bigdata take 2) //取List前2个元素 println(bigdata drop 2) //丢掉List前2个元素 println(bigdata splitAt 2) // 把List分成两部分,前面一个部分有2个元素 println(bigdata.apply(2)) //取下标为2的元素 println(bigdata(2)) //同上,取下标为2的元素
输出:
2
List(0, 1)
List(2, 1, 0)
List(0, 1)
List(2)
(List(0, 1),List(2))
2
2
List的相关操作方法:
val data = List('a','b','c','d','e','f') println(data indices) //取出List所有元素相对应的索引 println(data.indices zip data) //把左右两个集合进行拉链操作 println(data zipWithIndex) //把元素和索引具体进行配对的简便方法 println(data.toString()) println(data mkString("[",",","]")) //把List元素按照新的方式进行格式化输出 //第一个参数是格式化输出的开始第一个元素,第二个参数是集合中每2个元素之间的元素,第三个参数是格式化输出的最后一个元素 println(data.mkString("*")) //格式化输出,只关心中间的元素 println(data mkString)
输出:Range(0, 1, 2, 3, 4, 5)
Vector((0,a), (1,b), (2,c), (3,d), (4,e), (5,f))
List((a,0), (b,1), (c,2), (d,3), (e,4), (f,5))
List(a, b, c, d, e, f)
[a,b,c,d,e,f]
a*b*c*d*e*f
abcdef
List本身不变,要想作改变元素的操作,都会产生新的List,可以把对List改变的操作放在StringBuilder里
val builder = new StringBuilder //相当于缓冲数组 data.addString(builder,"[", ",", "]") //把data操作后的结果存入对象 println(builder) println(data)
输出:
[a,b,c,d,e,f]
List(a, b, c, d, e, f)
Array和List可以相互转换:
val array = data.toArray println(array.toList)输出:List(a, b, c, d, e, f)
把List内容拷贝进一个数组中
val new_Array = new Array[Char](10) //注意要拷贝进的这个数组必须能放下List的所有元素 data.copyToArray(new_Array, 3) //跳过数组前3个元素 new_Array.foreach(print)输出:
abcdef
迭代器:
val iterator = data.toIterator println(iterator.next) println(iterator.next)输出:
a
b
Spark之所以非常强大,让各个不同的框架(图计算、机器学习、流处理SQL)可以互相操作,主要因为有Iterator接口。
eg:机器学习可以直接使用Spark SQL中的内容,其中非常重要的是Spark SQL会产生RDD,要读取RDD的数据,有Iterator接口,不断next、next.......因为接口统一,读取数据的方式统一,机器学习不用关心数据来自Spark SQL还是流处理。
参考资料来源于大数据梦工厂 深入浅出scala 第33讲 由王家林老师讲解
阅读全文
0 0
- 33.List的一阶函数操作代码实战详解
- scala-33:List的一阶函数操作代码实战详解
- Scala深入浅出实战经典:33,List的一阶函数操作代码实战详解
- scala学习:List的一阶函数操作代码实战
- Scala List一阶函数操作
- scala-37::List的foldLeft、foldRight、sort操作代码实战
- 35.List的map、flatMap、foreach、filter操作代码实战
- 37.List的foldLeft、foldRight、sort操作代码实战
- Scala深入浅出实战经典:35,List的map、flatMap、foreach、filter操作代码实战
- Scala深入浅出实战经典:37,List的foldLeft、foldRight、sort操作代码实战
- scala学习之:List的map、flatMap、foreach、filter的操作代码实战
- scala-35:List的map、flatMap、foreach、filter操作代码实战
- scala-36:List的partition、find、takeWhile、dropWhile、 span、forall、exsists操作代码实战
- 36.List的partition、find、takeWhile、dropWhile、span、forall、exists操作代码实战
- Scala深入浅出实战经典:36,List的partition、find、takeWhile、dropWhile、span、forall、exsists操作代码实战
- HttpSession对象的详解与实战操作
- scala学习之:List的foldLeft、foldRight操作实战
- List类型对应的jedis操作详解
- js判断浏览器的内核和是否支持某些CSS3属性
- shell脚本中数组用法总结及脚本实现冒泡排序
- day03-----普林斯顿微积分-----mysql
- android多线程之三:终止线程池的方法
- Domain Adaptation总结(2017.9)
- 33.List的一阶函数操作代码实战详解
- JS中判断字符串中出现次数最多的字符及出现的次数
- caffe 训练log可视化
- Spring--事务管理
- 9月3日训练日记
- Unity3D
- Tensorflow训练卷积神经网络并保存模型,加载模型并导入手写图片测试
- 20170903
- Oracle数据库CPU使用率过高问题处理