第33讲:List的一阶函数操作代码实战详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第33讲:List的一阶函数操作代码实战详解相关的知识,希望对你有一定的参考价值。
操作的参数不是函数,就是一阶函数
我们通过具体的代码来说明:
package com.dt.scala.dataset object ListFirstOrderOps { def main(args: Array[String]): Unit = { //列表合并,使用:::操作符 println(List(1,2):::List(3,4):::List(5,6)) println(List(1,2):::(List(3,4):::List(5,6))) // 求列表的长度 println(List(1,2,3,4,5,5).length) val bigData = List("Spark","Hadoop","Kafka") //求列表的最后一个元素 println(bigData.last) //Kafka //选取除了最后一个元素的所有元素 println(bigData.init) //List(Spark, Hadoop) //反转List中的元素位置 println(bigData.reverse) //List(Kafka, Hadoop, Spark) //取前n个元素 println(bigData.take(2)) //取所有元素,除了前n个 println(bigData.drop(2)) // 在n位置处拆分List为两个List。效果等同于(c take n,c drop n) 但是splitAt更高效 println(bigData.splitAt(2)) //(List(Spark, Hadoop),List(Kafka)) //通过索引取元素的值,索引从0 开始。执行需要时间索引值成比例。 println(bigData.apply(2)) //Kafka println(bigData(2)) // 其实内部会调用apply方法 val data = List("a","b","c","d","e","f","g") //用列表的索引产生一个range println(data.indices) //Range(0, 1, 2, 3, 4, 5, 6) //用索引和data做zip操作,这种操作称之为拉链操作 println(data.indices zip data) //Vector((0,a), (1,b), (2,c), (3,d), (4,e), (5,f), (6,g)) // 列表提供了一个方法实现上面的拉链操作 println(data.zipWithIndex) //将列表转成字符串 println(data.toString()) //"List(a, b, c, d, e, f, g)" //使用字符串将列表中的元素拼接在一起 println(data.mkString("<", ",", ">")) //"<a,b,c,d,e,f,g>" println(data.mkString(",")) //"a,b,c,d,e,f,g" println(data.mkString) //"abcdefg" val buffer = new StringBuilder //将列表的所有元素追加到StringBuilder对象中 data.addString(buffer) // 与data.mkString("<", ",", ">")这个操作类型,只不过addString会将字符串追加 //到StringBuilder对象中 data.addString(buffer, "<", ",", ">") println(buffer) //数组和列表互转 val arr = data.toArray println(arr.toList) //获取迭代器 val iterator = data.iterator println(iterator.next()) println(iterator.next()) } }
本文出自 “叮咚” 博客,请务必保留此出处http://lqding.blog.51cto.com/9123978/1741966
以上是关于第33讲:List的一阶函数操作代码实战详解的主要内容,如果未能解决你的问题,请参考以下文章
第37讲:List的foldLeftfoldRightsort操作代码实战