Scala Stream

Scala Stream

Stream是一个懒惰的列表,其中的元素只有在需要时才被评估。这是Scala的一个特点。Scala支持懒人计算。它可以提高我们程序的性能。流具有与列表相同的性能特征。

语法:

val str = 1 #:: 2 #:: 3 #:: Stream.empty

在scala中,List可以用 :: 操作符来构造,而Stream可以用 # : : 操作符的方法来构造,在表达式的最后使用Stream.empty。在上面的语法中,这个流的头部是1,它的尾部是2和3。

对流的操作

创建一个流: 下面是在Scala中创建一个流的例子。

例子

// Program to creating an empty stream
  
// Creating object
object GFG
{ 
    // Main method
    def main(args:Array[String])
    { 
        // Creating stream
        val stream = 1 #:: 2#:: 8 #:: Stream.empty 
        println(stream) 
    } 
}

输出

Stream(1, ?)

在上面的输出中,我们可以看到,第二个元素没有被评估。在这里,一个问号显示在元素的位置上。Scala在需要的时候才会评估list。尾部没有被打印出来,因为它还没有被计算出来。

使用Stream.cons创建一个流: 我们也可以通过使用Stream.cons创建一个流。一个导入scala.collection.immutable.Stream.cons的包被用于创建流。

例子。

// Program to creating an stream
// using cons
import scala.collection.immutable.Stream.cons
  
// Creating object
object GFG
{ 
    // Main method
    def main(args:Array[String])
    { 
        // Creating stream
        val stream2: Stream[Int] = cons(1, cons(2, cons(3, Stream.empty) ) )
        println(s"Elements of stream2 = ${stream2}")
    } 
}

输出

Elements of stream2 = Stream(1, ?)

在流中使用take函数: take函数用于从流中提取元素。下面是使用take函数的例子。

例子:

// Program to Using take function on stream
  
// Creating object
object GFG
{ 
    // Main method
    def main(args:Array[String])
    { 
        // Creating stream
        val stream = 1 #:: 2#:: 8 #:: Stream.empty 
        println(stream) 
          
        // Taking elements from stream
        print("Take first 2 numbers from stream = ")
        stream.take(2).print
        print("\nTake first 10 numbers from stream2 = ")
        stream.take(10).print
    } 
}

输出:

Stream(1, ?)
Take first 2 numbers from stream = 1, 2, empty
Take first 10 numbers from stream2 = 1, 2, 8, empty

当我们想从一个流中提取10个数字时,尽管它只包含3个元素,但它并没有抛出任何IndexOutOfBoundsException。

在流中使用map函数: map函数被用来对流进行操作。

例子:

// Scala program to using map function on stream
  
// Creating object
object GFG
{ 
    // Main method
    def main(args:Array[String])
    { 
        // Creating stream
        val stream = 1 #:: 2#:: 8 #:: Stream.empty 
        println(stream) 
          
        // map elements from stream
        println(stream.map{_+5}) 
    } 
}

输出

Stream(1, ?)
Stream(6, ?)

在上面的例子中,通过使用map函数,我们将输入的集合转换为一个新的输出集合。

初始化一个空流: 下面的代码显示了如何初始化一个空流。

例子

// Program to create empty stream
  
// Creating object
object GFG
{ 
    // Main method
    def main(args:Array[String])
    { 
        // Creating empty stream
        val emptyStream: Stream[Int] = Stream.empty[Int]
        println(s"Empty Stream = $emptyStream")
    } 
}

输出

 Empty Stream = Stream()

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程