Scala基础应用(6)- 常用对象,集合等

来源:互联网 发布:js单选按钮选中 编辑:程序博客网 时间:2024/05/16 06:59

Scala基础应用(6)- 常用对象,集合等

本章主要讲解一些常用对象和集合类

1. 序列化(Ordered特质)

例子:class Rational(n: Int, d: Int) extends Ordered[Rational] {    def compare(that: Rational) =        (this.number * that.denom) - (that.number * this.denom)}

2. 数组 (Array)

  • 声明数组变量

    var aArray: Array[类型] = new Array[类型] (数组大小)var aArray = new Array[类型] (数组大小)var aArray = Array(初始值1, 初始值2, ...)例子:var aArray : Array[String] = new Array[String] (10)for (i <- 0 to 9)    aArray(i) = i.toStringvar aArray1 = new Array[String] (10)for (i <- 0 to (aArray1.length -1))     aArray(i) = i.toStringvar aArray2 = Array("0", "1")  // 实际上执行的是Array.apply("0", "1")for (a <- aArray2)    println (a)var emptyArray: Array[Nothing] = Array()var dimArray: Array[Array[String]] = Array (    Array("One", "Two"),    Array("Threee"),    Array("Four", "Five"))
  • 多维数组

    Scala不直接支持多维数组,但提供多种方法实现任意维度的数组

    var multipleArray = Array.ofDim[Int](3,3)for (i <- 0 to 2; j <- 0 to 2)    multipleArray(i)(j) = i * j
  • 连接数组

    var array1 = Array("one", "two")var array2 = Array("three")var combinedArray = Array.concat(array1, array2)
  • 范围数字数组 (只支持数字 Int)

    var numberArray1 = Array.range(0, 100, 2)  // 其中2为步进值var numberArray2 = Array.range(0, 100)     // 缺省步进值为1

3. 列表 (List)

  • 变量声明与数组相同,上面数组声明部分将Array改成List都可以工作, 但List不可变,即使用var声明是没有意义的
  • Nil 为空列表
  • 连接列表

    var aList1 = List("One", "Two")var aList2 = List("Three")var aString = "Four"var aList4 = List("Five", "Six")var combinedList0 = List.concat(aList1, aList2)var combinedList1 = aList1 ::: aList2var combinedList2 = aString :: aList4var combinedList3 = "First" :: Nilvar combinedList4 = "First" :: ("Second" :: Nil)
  • 列表头: head, 列表尾: tail

  • 统一列表: List.fill(次数)(值)
  • 制成表格列表: List.tabulate(元素数量,维度) (函数) // 维度缺省为1

    val square = List.tabulate(5) (n => n * n)val dim = List.tabulate(4, 5) (_ * _)val dim2 = List.tabulate(4,5) ((x, y) => x * y) // 也上面等同
  • 反序: aList.reverse

4. 集 (Set)

5. 映射 (Map)

6. 元组 (Tuple)

7. Option

8. 迭代(Iterator)

9. 集合可变与不可变层级图

  • 集合层级图

这里写图片描述

  • 可变集合层级图

这里写图片描述

  • 不可变集合层级图

这里写图片描述

10. 附表

  • Array

    序号声明说明 1 def apply( x: T, xs: T* ): Array[T] 创建T对象,其中T可以是Unit, Double, Float, Long, Int, Char, Short, Byte, Boolean数组。 2 def concat[T]( xss: Array[T]* ): Array[T] 连接所有阵列成一个数组。 3 def copy( src: AnyRef, srcPos: Int, dest: AnyRef, destPos: Int, length: Int ): Unit 复制一个数组到另一个。相当于Java的System.arraycopy(src, srcPos, dest, destPos, length). 4 def empty[T]: Array[T] 返回长度为0的数组 5 def iterate[T]( start: T, len: Int )( f: (T) => T ): Array[T] 返回一个包含一个函数的重复应用到初始值的数组。 6 def fill[T]( n: Int )(elem: => T): Array[T] 返回包含某些元素的计算的结果的次数的数组。 7 def fill[T]( n1: Int, n2: Int )( elem: => T ): Array[Array[T]] 返回一个二维数组,其中包含某些元素的计算的结果的次数。 8 def iterate[T]( start: T, len: Int)( f: (T) => T ): Array[T] 返回一个包含一个函数的重复应用到初始值的数组。 9 def ofDim[T]( n1: Int ): Array[T] 创建数组给出的尺寸。 10 def ofDim[T]( n1: Int, n2: Int ): Array[Array[T]] 创建了一个2维数组 11 def ofDim[T]( n1: Int, n2: Int, n3: Int ): Array[Array[Array[T]]] 创建3维数组 12 def range( start: Int, end: Int, step: Int ): Array[Int] 返回包含一些整数间隔等间隔值的数组。 13 def range( start: Int, end: Int ): Array[Int] 返回包含的范围内增加整数序列的数组。 14 def tabulate[T]( n: Int )(f: (Int)=> T): Array[T] 返回包含一个给定的函数的值超过从0开始的范围内的整数值的数组。 15 def tabulate[T]( n1: Int, n2: Int )( f: (Int, Int ) => T): Array[Array[T]] 返回一个包含给定函数的值超过整数值从0开始范围的二维数组。
  • List

    序号声明说明 1def +(elem: A): List[A]前置一个元素列表 2def ::(x: A): List[A]在这个列表的开头添加的元素。 3def :::(prefix: List[A]): List[A]增加了一个给定列表中该列表前面的元素。 4def ::(x: A): List[A]增加了一个元素x在列表的开头 5def addString(b: StringBuilder): StringBuilder追加列表的一个字符串生成器的所有元素。 6def addString(b: StringBuilder, sep: String): StringBuilder追加列表的使用分隔字符串一个字符串生成器的所有元素。 7def apply(n: Int): A选择通过其在列表中索引的元素 8def contains(elem: Any): Boolean测试该列表中是否包含一个给定值作为元素。 9def copyToArray(xs: Array[A], start: Int, len: Int): Unit列表的副本元件阵列。填充给定的数组xs与此列表中最多len个元素,在位置开始。 10def distinct: List[A]建立从列表中没有任何重复的元素的新列表。 11def drop(n: Int): List[A]返回除了第n个的所有元素。 12def dropRight(n: Int): List[A]返回除了最后的n个的元素 13def dropWhile(p: (A) => Boolean): List[A]丢弃满足谓词的元素最长前缀。 14def endsWith[B](that: Seq[B]): Boolean测试列表是否使用给定序列结束。 15def equals(that: Any): Booleanequals方法的任意序列。比较该序列到某些其他对象。 16def exists(p: (A) => Boolean): Boolean测试谓词是否持有一些列表的元素。 17def filter(p: (A) => Boolean): List[A]返回列表满足谓词的所有元素。 18def forall(p: (A) => Boolean): Boolean测试谓词是否持有该列表中的所有元素。 19def foreach(f: (A) => Unit): Unit应用一个函数f以列表的所有元素。 20def head: A选择列表的第一个元素 21def indexOf(elem: A, from: Int): Int经过或在某些起始索引查找列表中的一些值第一次出现的索引。 22def init: List[A]返回除了最后的所有元素 23def intersect(that: Seq[A]): List[A]计算列表和另一序列之间的多重集交集。 24def isEmpty: Boolean测试列表是否为空 25def iterator: Iterator[A]创建一个新的迭代器中包含的可迭代对象中的所有元素 26def last: A返回最后一个元素 27def lastIndexOf(elem: A, end: Int): Int之前或在一个给定的最终指数查找的列表中的一些值最后一次出现的索引 28def length: Int返回列表的长度 29def map[B](f: (A) => B): List[B]通过应用函数以g这个列表中的所有元素构建一个新的集合 30def max: A查找最大的元素 31def min: A查找最小元素 32def mkString: String显示列表的字符串中的所有元素 33def mkString(sep: String): String显示的列表中的字符串中使用分隔串的所有元素 34def reverse: List[A]返回新列表,在相反的顺序元素 35def sorted[B >: A]: List[A]根据排序对列表进行排序 36def startsWith[B](that: Seq[B], offset: Int): Boolean测试该列表中是否包含给定的索引处的给定的序列 37def sum: A概括这个集合的元素 38def tail: List[A]返回除了第一的所有元素 39def take(n: Int): List[A]返回前n个元素 40def takeRight(n: Int): List[A]返回最后n个元素 41def toArray: Array[A]列表以一个数组变换 42def toBuffer[B >: A]: Buffer[B]列表以一个可变缓冲器转换 43def toMap[T, U]: Map[T, U]此列表的映射转换 44def toSeq: Seq[A]列表的序列转换 45def toSet[B >: A]: Set[B]列表到集合变换 46def toString(): String列表转换为字符串
  • Tuple

    序号声明说明 1
  • Set

    序号声明说明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
  • Map

    序号声明说明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
  • Option

    序号声明说明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  • Iterator

    序号声明说明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 8个月宝宝流鼻血怎么办 4个月宝宝流鼻血怎么办 20个月宝宝发烧流鼻血怎么办 60天宝宝老鼻塞怎么办 10个月宝宝头被撞到流鼻血怎么办 狗狗受凉吐了怎么办 狗狗咳嗽流鼻涕一直不好怎么办 宝宝感冒咳嗽流鼻涕发烧怎么办 狗狗感冒咳嗽流鼻涕怎么办 9岁儿童咳嗽鼻塞怎么办 三个月大的狗狗流鼻涕怎么办 3个月小狗干呕流鼻涕怎么办 狗狗流鼻涕怎么办有浓 小狗狗感冒了怎么办呢 狗狗一直擤鼻涕怎么办 小狗感冒流黄鼻涕怎么办 六个月宝宝鼻塞流鼻涕怎么办 小狗吃太多吐了怎么办 狗狗晕车一直吐怎么办 狗狗已经晕车了怎么办 狗狗得犬瘟怎么办 泰迪坐车吐了怎么办 小孩感冒流鼻涕带血怎么办 孩子鼻子流鼻涕有血丝怎么办 鼻子过敏流鼻涕有血丝怎么办 孕妇感冒头痛鼻涕带血怎么办 孕妇感冒鼻塞鼻涕带血怎么办 孕晚期感冒流鼻涕打喷嚏怎么办 孕晚期感冒鼻塞流鼻涕怎么办 怀孕初期鼻涕一直流怎么办 孩子一直流鼻水怎么办 9个月宝宝流鼻涕怎么办 8个月婴儿流鼻涕怎么办 3岁宝宝鼻塞咳嗽怎么办 又感冒又咳嗽了怎么办 鼻塞有一个月了怎么办 感冒一直流清水鼻涕怎么办 孩子受凉流清水鼻涕怎么办 一遇冷空气就打喷嚏流鼻涕怎么办 打喷嚏鼻塞流清鼻涕怎么办 哺乳期鼻子不通气有鼻涕怎么办