zoukankan      html  css  js  c++  java
  • scala 学习笔记一 列表List

     1、介绍

        Scala 列表类似于数组,它们所有元素的类型都相同,但是它们也有所不同:列表是不可变的,值一旦被定义了就不能改变,其次列表 具有递归的结构(也就是链接表结构)而数组不是。。

        列表的元素类型 T 可以写成 List[T]。例如,以下列出了多种类型的列表:

        

        构造列表的两个基本单位是 Nil 和 ::

        Nil 也可以表示为一个空列表。

        以上实例我们可以写成如下所示:

        

      

      2、列表基本操作

        Scala列表有三个基本操作:

        1、head 返回列表第一个元素

        2、tail 返回一个列表,包含除了第一元素之外的其他元素

        3、isEmpty 在列表为空时返回true

        对于Scala列表的任何操作都可以使用这三个基本操作来表达。实例如下:

      连接列表

        

        

        

        ++: 与++不同的是使用的右边边的数据类型

        

      List.fill()

        我们可以使用 List.fill() 方法来创建一个指定重复数量的元素列表:

        

      

      List.tabulate()

        List.tabulate() 方法是通过给定的函数来创建列表。

        方法的第一个参数为元素的数量,可以是二维的,第二个参数为指定的函数,我们通过指定的函数计算结果并返回值插入到列表中,起始值为 0,实例如下

        

        

      List.reverse

        List.reverse 用于将列表的顺序反转,实例如下:

        

       

      Scala List 常用方法

        1、为列表预添加元素

          +:  在List的头部增加元素

          :+  在后面追加元素

        

        

       2、def addString(b: StringBuilder): StringBuilder

        将列表的所有元素添加到 StringBuilder

        

       3、def addString(b: StringBuilder, sep: String): StringBuilder

        将列表的所有元素添加到 StringBuilder,并指定分隔符

        

       4、通过列表索引获取元素

          def apply(n: Int): A

        

       5、检测列表中是否包含指定的元素

          def contains(elem: Any): Boolean

        

       6、将列表的元素复制到数组中

        def copyToArray(xs: Array[A], start: Int, len: Int): Unit

        

       7、去除列表的重复元素,并返回新列表

         def distinct: List[A]

        

       8、丢弃前n个元素,并返回新列表

        def drop(n: Int): List[A]

        

       9、丢弃最后n个元素,并返回新列表

        def dropRight(n: Int): List[A]

        

       10、从左向右丢弃元素,直到条件p不成立

        def dropWhile(p: (A) => Boolean): List[A]

        

       11、检测列表是否以指定序列结尾

        def endsWith[B](that: Seq[B]): Boolean

        

       12、判断是否相等

        def equals(that: Any): Boolean

        

       13、判断列表中指定条件的元素是否存在

        判断l是否存在某个元素:

        

       14、输出符号指定条件的所有元素。

        过滤出长度为3的元素:

        

       15、检测所有元素

        例如:判断所有元素是否以"a"开头:

        

       16、将函数应用到列表的所有元素

        def foreach(f: (A) => Unit): Unit

        

       17、获取列表的第一个元素,获取列表的最后一个原始

        def head: A

        def last: A

        

        

       18、从指定位置 from 开始查找元素第一次出现的位置

        def indexOf(elem: A, from: Int): Int

        

       19、返回所有元素,除了最后一个,返回所有元素,除了第一个

        def init: List[A]

        def tail: List[A]

        

       20、计算多个集合的交集

        def intersect(that: Seq[A]): List[A]

        

       21、检测列表是否为空

        def isEmpty: Boolean

        

       22、创建一个新的迭代器来迭代元素

        def iterator: Iterator[A]

        

       23、在指定的位置 end 开始查找元素最后出现的位置

        def lastIndexOf(elem: A, end: Int): Int

        

       24、返回列表长度

        def length: Int

        

       25、通过给定的方法将所有元素重新计算

         def map[B](f: (A) => B): List[B]

        

       26、查找最大元素,查找最小元素

        def max: A,def min: A

        

       27、列表所有元素作为字符串显示

        def mkString: String

        

       28、使用分隔符将列表所有元素作为字符串显示

        def mkString(sep: String): String

         

       29、列表反转

        def reverse: List[A]

        

       30、列表排序

        def sorted[B >: A]: List[A]

        

       31、检测列表在指定位置是否包含指定序列

        def startsWith[B](that: Seq[B], offset: Int): Boolean

        

       32、计算集合元素之和

        def sum: A

        

       33、提取列表的前n个元素

        def take(n: Int): List[A]

        

       34、提取列表的后n个元素

        def takeRight(n: Int): List[A]

        

       35、列表转换为数组

        def toArray: Array[A]

        

       36、返回缓冲区,包含了列表的所有元素

        def toBuffer[B >: A]: Buffer[B]

        

       37、List 转换为 Map

        def toMap[T, U]: Map[T, U]

        

       38、List 转换为 Seq

        def toSeq: Seq[A]

        

       39、List 转换为 Set

        def toSet[B >: A]: Set[B]

        

       41、列表转换为字符串

        def toString(): String

        

      参考:http://www.runoob.com/scala/scala-lists.html

  • 相关阅读:
    spring-ioc
    Hibernate之二级缓存
    hibernate之HQL语句
    hibernate 多对多关联关系
    hibernate关联关系(一对多)
    Hibernate之主键生成策略
    struts2的CRUD
    struts2的OGNL
    struts2的初步认识
    Maven介绍
  • 原文地址:https://www.cnblogs.com/shaosks/p/9330180.html
Copyright © 2011-2022 走看看