zoukankan      html  css  js  c++  java
  • Scala入门基础2集合

    1》集合

    1)Scala List(列表):List的特征是其元素以线性方式存储,集合中可以存放重复对象。

    基本操作

      def main(args: Array[String]) {
        // val siteList:List[String]=List("wang","huai","yu")
        val siteList="wang"::("huai"::("yu"::Nil))
        println("列表的第一个元素"+siteList.head)
        println("除去第一个元素"+siteList.tail)
        println("列表是否为空"+siteList.isEmpty)
      }
    

     列表链接

        val siteList1=1::(2::(3::Nil))
        val siteList2:List[Int]=List(4,5)
        val siteList3=siteList1:::siteList2
        println(siteList3)
    输出List(1, 2, 3, 4, 5)
    使用 List.fill() 方法来创建一个指定重复数量的元素列表
       val siteList2=List.fill(4)("wang")
        println(siteList2)
    输出List(wang, wang, wang, wang)
    
    List.tabulate() 方法是通过给定的函数来创建列表。 
    
    def main(args: Array[String]) {
        val squares = List.tabulate(6)(n => n * n)
        println( "一维 : " + squares  )
      }
    输出List(0, 1, 4, 9, 16, 25)
    
    List.reverse 用于将列表的顺序反转,实例如下:
    val squares = List.tabulate(6)(n => n * n)
        println( "一维 : " + squares  )
        println("翻转顺序后:"+squares.reverse)
    输出:
    一维 : List(0, 1, 4, 9, 16, 25)
    翻转顺序后:List(25, 16, 9, 4, 1, 0)
    

     2)Scala Set(集合)是没有重复的对象集合,所有的元素都是唯一的。

     定义集合

      def main(args: Array[String]) {
        val mySet=Set(1,2,3)
        println(mySet.getClass.getName)
        println(mySet.exists(_ / 2== 0)) //true
        println(mySet.drop(1)) //Set(2,3)
        println(mySet)//Set(1, 2, 3)
      }

    可变Set

    import  scala.collection.mutable.Set
    

     加入这个引入后变为了可变set

        val mySet=Set(1,2,3)
        println(mySet.getClass.getName)
        mySet.add(4)
        println(mySet)//Set(1, 2, 3, 4)
        mySet+=5
        println(mySet)//Set(1, 5, 2, 3, 4)
        mySet.remove(1)
        println(mySet)//Set(5, 2, 3, 4)
        mySet-=2
        println(mySet)//Set(5, 3, 4))
        println(mySet)//Set(5, 3, 4))
        println(mySet.head)//5
        println(mySet.tail)//Set(3, 4)
        println(mySet.isEmpty)//false

     链接集合

        val mySet=Set(1,2,3)
        val mySet2=Set(4,6)
        var mySet3=mySet++mySet2;
        println(mySet3)//Set(1, 2, 6, 3, 4)

    求Set的最大和最小值,set中可以直接使用max和min

        println(mySet3.min)
        println(mySet3.max)
    

     求交集

        val mySet=Set(1,2,3)
        val mySet2=Set(3,4,6)
        println(mySet2.&(mySet))//Set(3)

    Scala List 常用方法

    下表列出了 Scala List 常用的方法:

    序号方法及描述
    1

    def +:(elem: A): List[A]

    为列表预添加元素

    scala> val x = List(1)
    x: List[Int] = List(1)
    
    scala> val y = 2 +: x
    y: List[Int] = List(2, 1)
    
    scala> println(x)
    List(1)
    2

    def ::(x: A): List[A]

    在列表开头添加元素

    3

    def :::(prefix: List[A]): List[A]

    在列表开头添加指定列表的元素

    4

    def :+(elem: A): List[A]

    复制添加元素后列表。

    scala> val a = List(1)
    a: List[Int] = List(1)
    
    scala> val b = a :+ 2
    b: List[Int] = List(1, 2)
    
    scala> println(a)
    List(1)
    5

    def addString(b: StringBuilder): StringBuilder

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

    6

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

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

    7

    def apply(n: Int): A

    通过列表索引获取元素

    8

    def contains(elem: Any): Boolean

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

    9

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

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

    10

    def distinct: List[A]

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

    11

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

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

    12

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

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

    13

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

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

    14

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

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

    15

    def equals(that: Any): Boolean

    判断是否相等

    16

    def exists(p: (A) => Boolean): Boolean

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

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

    scala> l.exists(s => s == "Hah")
    res7: Boolean = true
    17

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

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

    过滤出长度为3的元素:

    scala> l.filter(s => s.length == 3)
    res8: List[String] = List(Hah, WOW)
    18

    def forall(p: (A) => Boolean): Boolean

    检测所有元素。

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

    scala> l.forall(s => s.startsWith("H")) res10: Boolean = false
    19

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

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

    20

    def head: A

    获取列表的第一个元素

    21

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

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

    22

    def init: List[A]

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

    23

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

    计算多个集合的交集

    24

    def isEmpty: Boolean

    检测列表是否为空

    25

    def iterator: Iterator[A]

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

    26

    def last: A

    返回最后一个元素

    27

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

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

    28

    def length: Int

    返回列表长度

    29

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

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

    30

    def max: A

    查找最大元素

    31

    def min: A

    查找最小元素

    32

    def mkString: String

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

    33

    def mkString(sep: String): String

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

    34

    def reverse: List[A]

    列表反转

    35

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

    列表排序

    36

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

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

    37

    def sum: A

    计算集合元素之和

    38

    def tail: List[A]

    返回所有元素,除了第一个

    39

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

    提取列表的前n个元素

    40

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

    提取列表的后n个元素

    41

    def toArray: Array[A]

    列表转换为数组

    42

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

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

    43

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

    List 转换为 Map

    44

    def toSeq: Seq[A]

    List 转换为 Seq

    45

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

    List 转换为 Set

    46

    def toString(): String

    列表转换为字符串

    Scala Set 常用方法

    下表列出了 Scala Set 常用的方法:

    序号方法及描述
    1

    def +(elem: A): Set[A]

    为集合添加新元素,x并创建一个新的集合,除非元素已存在

    2

    def -(elem: A): Set[A]

    移除集合中的元素,并创建一个新的集合

    3

    def contains(elem: A): Boolean

    如果元素在集合中存在,返回 true,否则返回 false。

    4

    def &(that: Set[A]): Set[A]

    返回两个集合的交集

    5

    def &~(that: Set[A]): Set[A]

    返回两个集合的差集

    6

    def +(elem1: A, elem2: A, elems: A*): Set[A]

    通过添加传入指定集合的元素创建一个新的不可变集合

    7

    def ++(elems: A): Set[A]

    合并两个集合

    8

    def -(elem1: A, elem2: A, elems: A*): Set[A]

    通过移除传入指定集合的元素创建一个新的不可变集合

    9

    def addString(b: StringBuilder): StringBuilder

    将不可变集合的所有元素添加到字符串缓冲区

    10

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

    将不可变集合的所有元素添加到字符串缓冲区,并使用指定的分隔符

    11

    def apply(elem: A)

    检测集合中是否包含指定元素

    12

    def count(p: (A) => Boolean): Int

    计算满足指定条件的集合元素个数

    13

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

    复制不可变集合元素到数组

    14

    def diff(that: Set[A]): Set[A]

    比较两个集合的差集

    15

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

    返回丢弃前n个元素新集合

    16

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

    返回丢弃最后n个元素新集合

    17

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

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

    18

    def equals(that: Any): Boolean

    equals 方法可用于任意序列。用于比较系列是否相等。

    19

    def exists(p: (A) => Boolean): Boolean

    判断不可变集合中指定条件的元素是否存在。

    20

    def filter(p: (A) => Boolean): Set[A]

    输出符合指定条件的所有不可变集合元素。

    21

    def find(p: (A) => Boolean): Option[A]

    查找不可变集合中满足指定条件的第一个元素

    22

    def forall(p: (A) => Boolean): Boolean

    查找不可变集合中满足指定条件的所有元素

    23

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

    将函数应用到不可变集合的所有元素

    24

    def head: A

    获取不可变集合的第一个元素

    25

    def init: Set[A]

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

    26

    def intersect(that: Set[A]): Set[A]

    计算两个集合的交集

    27

    def isEmpty: Boolean

    判断集合是否为空

    28

    def iterator: Iterator[A]

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

    29

    def last: A

    返回最后一个元素

    30

    def map[B](f: (A) => B): immutable.Set[B]

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

    31

    def max: A

    查找最大元素

    32

    def min: A

    查找最小元素

    33

    def mkString: String

    集合所有元素作为字符串显示

    34

    def mkString(sep: String): String

    使用分隔符将集合所有元素作为字符串显示

    35

    def product: A

    返回不可变集合中数字元素的积。

    36

    def size: Int

    返回不可变集合元素的数量

    37

    def splitAt(n: Int): (Set[A], Set[A])

    把不可变集合拆分为两个容器,第一个由前 n 个元素组成,第二个由剩下的元素组成

    38

    def subsetOf(that: Set[A]): Boolean

    如果集合中含有子集返回 true,否则返回false

    39

    def sum: A

    返回不可变集合中所有数字元素之和

    40

    def tail: Set[A]

    返回一个不可变集合中除了第一元素之外的其他元素

    41

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

    返回前 n 个元素

    42

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

    返回后 n 个元素

    43

    def toArray: Array[A]

    将集合转换为数组

    44

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

    返回缓冲区,包含了不可变集合的所有元素

    45

    def toList: List[A]

    返回 List,包含了不可变集合的所有元素

    46

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

    返回 Map,包含了不可变集合的所有元素

    47

    def toSeq: Seq[A]

    返回 Seq,包含了不可变集合的所有元素

    48

    def toString(): String

    返回一个字符串,以对象来表示

  • 相关阅读:
    【华为云技术分享】手把手教你如何在ARM上源码编译Redis
    【华为云技术分享】Linux内核编程环境 (2)
    华为云MySQL 8.0正式商用,全新增强版开源利器强势来袭
    【转载】Mysql删除所有表不删除数据库方法
    【转载】使用Sublime Text 3的HTML-CSS-JS Prettify插件格式化代码
    【转载】Node.js学习笔记之一
    jquery分页插件pagination.js的使用
    Windows平台下搭建Git服务器
    js实现返回页面顶部
    交换机的级联和堆叠
  • 原文地址:https://www.cnblogs.com/837634902why/p/10466693.html
Copyright © 2011-2022 走看看