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
序号声明说明 1Set
序号声明说明 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 48Map
序号声明说明 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 46Option
序号声明说明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Iterator
序号声明说明 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
- Scala基础应用(6)- 常用对象,集合等
- Scala基础应用(2)- 类和对象
- scala中的常用集合
- scala基础语法-集合
- scala的集合基础
- scala基础之对象
- Scala基础应用(1)- 基本语法
- Scala基础应用(3)- 特质
- Scala基础应用(8)- 约束
- scala基础---集合操作汇总
- Spark基础-Scala集合操作
- 【Java基础之集合(一)】各种常用集合(Array、ArrayList、HashSet、HashMap、TreeMap等)分析对比
- Scala 基础学习-Scala 单例对象
- Java基础系列七、排序+常用对象+集合
- Scala集合(二)
- Scala 集合(Collection)
- Scala集合(二)
- scala基础之类和对象
- 严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis
- 页面404错误
- 位运算
- swift3自定义导航条(一)
- oracle创建表空间查看表报数据库未打开
- Scala基础应用(6)- 常用对象,集合等
- Scala基础应用(7)- map/flatMap和filter
- Scala基础应用(8)- 约束
- Scala基础应用(9)- 隐式转换
- Scala基础应用(10)- 传值与传名参数
- Scala基础应用(11)- 懒加载(lazy语法糖)
- Unity3D说明文档翻译-Creating Gameplay
- swift3自定义导航条(二)颜色处理
- 《Understanding the Linux kernel》学习笔记 Chapter 7: Process Scheduling