zoukankan      html  css  js  c++  java
  • scala编程第16章学习笔记(1)

    List列表的基本操作

    head方法获得列表的第一个元素

    tail方法获得列表除第一个元素之外的其它元素

    isEmpty:判断列表是否为空,空的话返回真

    last:获得列表最后一个元素

    init:获得除最后一个元素之外的元素

    reverse:反转列表

    前缀与后缀:drop、take、splitAt

    xs take n 返回xs列表的前n个元素,如果n大于xs.length,则返回整个xs。

    xs drop n 返回xs列表除前n个元素之外的所有元素,如果n大于xs.length,则返回空列表。

    splitAt操作在指定位置拆分列表,并返回对偶列表。

    xs splitAt n等价于(xs take n, xs drop n)

    例子如下:

    scala> List(1, 2, 3, 4, 5) take 2
    res2: List[Int] = List(1, 2)
    
    scala> List(1, 2, 3, 4, 5) drop 2
    res3: List[Int] = List(3, 4, 5)
    
    scala> List(1, 2, 3, 4, 5) splitAt 2
    res4: (List[Int], List[Int]) = (List(1, 2),List(3, 4, 5))

    元素选择:apply方法和indices方法
    apply方法实现了随机元素的选择,与其它类型一样,当对象出现在应该是方法调用的函数位置上时,就会隐式地插入apply方法

    scala> val abcde=List('a' ,'b', 'c', 'd', 'e')
    abcde: List[Char] = List(a, b, c, d, e)
    
    scala> abcde apply 2
    res7: Char = c
    
    scala> abcde(2)
    res8: Char = c

    xs apply n 等价于 (xs drop n).head
    indices方法可以返回指定列表的所有有效索引值组成的类表:

    scala> abcde.indices
    res9: scala.collection.immutable.Range = Range(0, 1, 2, 3, 4)

    啮合列表:zip

    zip操作可以把两个列表组成一个对偶列表:

    scala> abcde.indices zip abcde
    res10: scala.collection.immutable.IndexedSeq[(Int, Char)] = Vector((0,a), (1,b),(2,c), (3,d), (4,e))

    如果两个列表的长度不一致,那么任何不能匹配的元素将被丢掉:

    scala> abcde zip List(1, 2, 3)
    res11: List[(Char, Int)] = List((a,1), (b,2), (c,3))

    zipWithIndex把列表元素与索引值啮合在一起

    scala> abcde.zipWithIndex
    res12: List[(Char, Int)] = List((a,0), (b,1), (c,2), (d,3), (e,4))

    显示列表:toString方法和mkString方法

    toString操作返回列表的标准字符串表达形式:

    scala> abcde.toString
    res13: String = List(a, b, c, d, e)

    如果需要其他表达形式,可以使用mkString方法。xs mkString(pre, sep, post)
    其中pre是需要在显示的元素之前的前缀字符串,sep为两个元素之间的分割字符串,post为显示在最后面的后缀字符串。

    xs.mkString 等价于 xs mkString("", sep, "")

    xs.mkString 等价于 xs mkString ""

    scala> abcde mkString ("[", ",", "]")
    res15: String = [a,b,c,d,e]
    
    scala> abcde mkString ""
    res17: String = abcde
    
    scala> abcde.mkString
    res19: String = abcde
    
    scala> abcde mkString ("List(", ", ", ")")
    res20: String = List(a, b, c, d, e)

    mkString方法还有名为addString的变体,它可以把构建好的字符串添加到StringBuilder对象中,而不是作为结果返回:

    scala> val buf = new StringBuilder
    buf: StringBuilder =
    
    scala> abcde addString (buf, "(", ";", ")")
    res21: StringBuilder = (a;b;c;d;e)

    mkString和addString方法都继承自List的超特质Iterable,因此他们可以应用到各种可枚举的集合类上。

  • 相关阅读:
    An internal error occured during :"C/C++" . java.lang.NullPointerException
    链接目标文件提示对象重定义解决方法
    cocos2d Slider 透明滑动部件无法生成解决办法
    cocos2d 艺术标签没有显示
    cocos2d项目 打包apk 项目名称相关设置
    cocos2d-x 3.2 listview scorllview 等容器在小米华为等部分手机显示泛白解决
    Linux发行版的系统目录名称命名规则以及用途
    Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
    复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符
    在vim中设置tab缩进为4个字符
  • 原文地址:https://www.cnblogs.com/gaopeng527/p/4089646.html
Copyright © 2011-2022 走看看