第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的一阶函数操作代码实战详解的主要内容,如果未能解决你的问题,请参考以下文章

第38讲:List伴生对象操作方法代码实战

第37讲:List的foldLeftfoldRightsort操作代码实战

机器学习实战 | 支持向量机·sklearn 参数详解

第23讲: Scala高阶函数实战详解

第21讲: 偏函数(Partially applied function)实战详解

Java8新特性及实战视频教程完整版