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,因此他们可以应用到各种可枚举的集合类上。

  • 相关阅读:
    图片验证码制作
    上传图片加水印
    组合查询加分页
    C# 数据类型 数据转换 自己的见解和方式
    C# 基础控制台程序的创建,输出,输入,定义变量,变量赋值,值覆盖,值拼接,值打印
    关于Spring注解
    java I/O
    关于web.xml配置
    第7章 使用springMVC构建Web应用程序 7.1 springMVC配置
    js配合c3制作一个动态钟表
  • 原文地址:https://www.cnblogs.com/gaopeng527/p/4089646.html
Copyright © 2011-2022 走看看