Sequence是Iterable类的可迭代集合。它用于表示具有元素定义顺序(即保证不可变)的索引序列。序列的元素可以使用其索引进行访问。方法适用于建立索引的目的。也可以使用reverse和reverseIterator方法可逆地访问序列。
索引的范围是0到(n – 1),其中,n =序列的长度。为了找到子序列,序列支持各种方法。诸如indexOf,segmentLength,prefixLength,lastIndexWhere,lastIndexOf,startsWith,endsWith之类的方法。序列有两个主要的子特性,即IndexedSeq和LinearSeq ,它们提供了不同的性能保证。 IndexexedSeq提供元素的快速和随机访问,而LinearSeq仅通过头提供对第一个元素的快速访问,还包含快速尾部操作。
范例1:
// Scala program to illustrate sequence
import scala.collection.immutable._
object GFG
{
// Main Method
def main(args:Array[String])
{
// Initializing sequence
var seq:Seq[Int] = Seq(1,2,3,4,5,6)
// Printing Sequence
seq.foreach((element:Int) => print(element+","))
println("\nElements Access Using Index")
println(seq(0))
println(seq(1))
println(seq(2))
println(seq(3))
println(seq(4))
println(seq(5))
}
}
输出:
1,2,3,4,5,6,
Elements Access Using Index
1
2
3
4
5
6
序列中使用的一些预定义方法
- def apply(index:Int):A->从序列中选择一个元素
- def contains [A1>:A](elem:A1):布尔值->检查序列是否包含给定元素
- def count(p:(A)=>布尔值):Int->计算满足谓词的元素数
- def length:Int->给出序列的长度
- def copyToArray(xs:Array [A],start:Int,len:Int):单位->用于将Sequence的元素复制到数组
- def startsWith [B](那:GenSeq [B]):布尔值->检查序列是否以给定序列终止
- def head:A->它选择序列的第一个元素。
- def indexOf(elem:A):Int->查找序列中值首次出现的索引
- def isEmpty:布尔值->测试序列是否为空。
- def lastIndexOf(elem:A):Int->查找序列中最后一次出现的值的索引
- def reverse:Seq [A]->返回具有相反顺序元素的新序列。
使用预定义方法的序列示例
范例2:
// Scala program to illustrate sequence
object MainObject
{
// Main Method
def main(args:Array[String])
{
// Initializing sequence
var seq:Seq[Int] = Seq(1, 2, 3, 4, 5, 6)
// Printing Sequence
seq.foreach((element:Int) => print(element+","))
// Using Some Predefined Methods
println("\nis Empty: "+ seq.isEmpty)
println("\nEnds with (5,6): "+ seq.endsWith(Seq(5,6)))
println("\nLength of sequence: "+ seq.length)
println("\ncontains 3: "+ seq.contains(3))
println("\nlast index of 4 : "+ seq.lastIndexOf(4))
println("\nReversed sequence: "+ seq.reverse)
}
}
输出:
1,2,3,4,5,6,
is Empty: false
Ends with (5,6): true
Length of sequence: 6
contains 3: true
last index of 4 : 3
Reversed sequence: List(6, 5, 4, 3, 2, 1)