今天来看一下关于List的一阶函数操作

让我们看下下面的代码

println(List(1,2,3,4):::List(4,5,6,7,8):::List(10,11))//列表连接
    println(List(1,2,3,4)::List(4,5,6,7,8)::List(10,11))//两个冒号连接也行
    println(List(1,2,3,4).length)//速度较慢,isEmpty用来衡量是否为0
   
    val bigData = List("Hadoop","Spark","Kaffka")
    println(bigData.last)//最后一个元素
    println(bigData.init)//除去最后一个元素后形成的集合
    println(bigData.reverse)//元素反转
    println(bigData.take(2))//取前两个元素
    println(bigData.drop(2))//把前面的n个元素去除后剩下元素的集合
    println(bigData.splitAt(2))//分割成两个列表,前n个为一个列表,剩下的为一个列表
    println(bigData.apply(2))//访问具体元素,索引位置为n
    println(bigData(2))//下标为2的元素,内部会调apply
   
    val data = List('a','b','c','d','e','f')
    println(data.indices)//取出所有元素的索引
    println(data.indices zip data)//两个列表结合成元组
    println(data.zipWithIndex)//与index结合
    println(data.toString())//打印列表
    println(data.mkString)//打印元素
    println(data.mkString("[", ",", "]"))//将列表按格式进行输出
    println(data.mkString(" "))//元素的分隔格式,输出

println("***************************")
   
   
    val buffer = new StringBuilder//StringBuilder,缓存数组
    data.addString(buffer, "(", "::", ")")//将操作后的结果存入buffer,后面为分隔方法
    println(buffer)
   
   
    val array = data.toArray//转换成数组
    println(array.toList)//转换成列表
   
    val new_Array = new Array[Char](10)
    data.copyToArray(new_Array, 3)//将列表拷贝进数组,大小必须能放下所有元素。3为跳过前三个元素后,再将列表拷贝进来,即,前三个元素是空的
    new_Array.foreach(print)
    println
   
   
    val iterator = data.toIterator//转换成迭代器
    println(iterator.next)
    println(iterator.next)

关于每一个操作的后面,我都给出了相应的注意,但我们再来统一看一遍。

:::列表连接符,它能将几个列表连接成一个新的列表。(也可以用::)

length方法,计算列表长度,但是效率较慢。如果想判断列表是否为空,可用isEmpty。

last方法,取出列表最后一个元素;init方法,取出除最后一个元素外其它元素构成的列表;reverse方法,使列表元素顺序反转;take方法,取出列表的前n个元素;drop方法,去除列表的前n个元素;splitAt方法,分隔成两个列表,前n个元素构成一个列表,剩下的元素构成另外一个列表;apply,取出索引为n的元素,可省略apply。

indices方法,取出元素的索引;zip方法,组成两个列表成一个元组;zipWithIndex方法,使元素与索引结合成一个新的列表。toString,使列表可打印;mkString方法,只输出元素;mkString("[", ",", "]")方法,按格式输出元素;mkString(" ")方法,按制定分隔符分隔元素。

StringBuilder,缓存数组;addString,按格式将元素添加到缓存数组中;toList,toArray方法,列表和数组可相与转换;copyToArray方法,将列表元素拷贝到数组中;toIterator方法,将列表转换成迭代器。

分享下更多的scala资源吧:

百度云盘:http://pan.baidu.com/s/1gd7133t

微云云盘:http://share.weiyun.com/047efd6cc76d6c0cb21605cfaa88c416

360云盘: http://yunpan.cn/cQN9gvcKXe26M (提取码:13cd)

信息来源于 DT大数据梦工厂微信公众账号:DT_Spark

关注微信账号,获取更多关于scala学习内容

第33讲:List的一阶函数操作代码实战详解的更多相关文章

  1. Scala 深入浅出实战经典 第64讲:Scala中隐式对象代码实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  2. Scala 深入浅出实战经典 第63讲:Scala中隐式类代码实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  3. Scala 深入浅出实战经典 第52讲:Scala中路径依赖代码实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  4. 第52讲:Scala中路径依赖代码实战详解

    今天学习了scala中的路径依赖,来看一下实战代码 class Outer{  private val x = 10  class Inner{    private val y = x +10  } ...

  5. 王家林系列之scala--第69讲:Scala并发编程react、loop代码实战详解

    刚才看了一下,群里王家林老师又更新课程了,真为王老师的勤奋感到佩服,于是迫不及待的下载下来观看学习.本期讲的是关于scala并发编程的react.loop代码实战. 信息来源于 DT大数据梦工厂微信公 ...

  6. 第71讲:Scala界面Panel、Layout实战详解

    今天学习了王家林老师scala讲座的第71讲,scala界面编程panel实战.让我们一起来看一下. 信息来源于 DT大数据梦工厂微信公众账号:DT_Spark 关注微信账号,获取更多关于王家林老师的 ...

  7. Scala 深入浅出实战经典 第39讲:ListBuffer、ArrayBuffer、Queue、Stack操作代码实战

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  8. python操作redis用法详解

    python操作redis用法详解 转载地址 1.redis连接 redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用 ...

  9. Scala深入浅出实战经典之 List的foldLeft、foldRight、sort操作代码实战

     Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 3 ...

随机推荐

  1. jquery tmpl遍历

    最近发现大家用模板渲染一些顺带逻辑功能代码块时,用jquery tmpl较多,遇到了一些问题,现在就个人以前研究过的一切常用功能作介绍,主要针对遍历,其它的大家可以自行浏览一起网站,如:http:// ...

  2. JS settimeout 使用笔记

    无参数使用方法: setTimeout(function_name,delay_time); 基本使用方法是逗号前是函数名字,不能带有 xxxx(),不然不执行: 但是很多函数都要带参数的,以下是解决 ...

  3. 嵌入式Linux内核I2C子系统详解

    1.1 I2C总线知识 1.1.1  I2C总线物理拓扑结构     I2C总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成.通信原理是通过对SCL和SDA线高 ...

  4. 什么是Mbps、Kbps、bps、kb、mb及其换算和区别

    Mbps 即 Milionbit pro second(百万位每秒): Kbps 即 Kilobit pro second(千位每秒): bps 即 bit pro second(位每秒): 速度单位 ...

  5. zk源码环境搭建

    zk不是使用maven管理的. 将zk的src下的代码导入eclipse,lib下的jar包导入工程. QuorumPeerMain类的main方法是入口,启动了zk的server,参数是conf文件 ...

  6. bash脚本编程之二 条件判断and 逻辑运算

    1.条件测试结构 1) if/then结构: 判断命令列表的退出码是否为0,0为成功. 如果if和then在条件判断的同一行上的话, 必须使用分号来结束if表达式: if和then都是关键字. 关键字 ...

  7. VC MFC在CMFCToolBar工具栏中加入组合框

    如何在CMFCToolBar工具栏中加入组合框等控件,且先看在线MSDN上怎么说的: 要增加一个组合框,需要完成以下步骤: 1.在工具栏资源中,增加一个对应ID资源号的按钮. 2.在主框架(mainf ...

  8. xfire webServeic 例子

    xfire webServeic 例子,参考网上众多例子,自己写得完成了,给大家分享 大家只要按这个目录去建文件就可以了,然后运行,至于其中原理慢慢理会吧 环境:myeclipse 10 +xfire ...

  9. JQuery 操作按钮遮罩(删除)

    HTML代码: <input type="button" class="delete_btn" value="删 除" /> & ...

  10. Linux内核模块简介

    一. 摘要 这篇文章主要介绍了Linux内核模块的相关概念,以及简单的模块开发过程.主要从模块开发中的常用指令.内核模块程序的结构.模块使用计数以及模块的编译等角度对内核模块进行介绍.在Linux系统 ...