Scala Trait Traversable 第2部分

Scala Trait Traversable 第2部分

在前面的Set中,我们已经看到了Taversable类的一些操作。现在,在本集中,我们将感知到更多的操作。

这些操作如下。

  • 转换操作
    转换操作是toList, toSeq, toArray, toStream, toSet, toMap, toIterable, and toIndexedSeq 。 这些操作将Traversable的集合变为一个相对独立的东西。

例子 :

// Scala program of Conversion operation
 
// Creating object
object Conversion
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating Set of numbers
        val q = Set(2, 7, 8, 15, 19)
 
        // Converting Set to an Array
        val r = q.toArray
 
        // Displaying an Array
        println(r)
    }
}

输出

[I@506e1b77
  • 在这里,转换操作即 toArray将把上述的Set(或任何Traversable)转换成数组。

例子

// Scala program of Conversion operation
 
// Creating object
object Conversion
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating Set of numbers
        val q = Set(2, 6, 3, 7, 15, 20)
 
        // Converting a Set to a List
        val r = q.toList
 
        // Displaying a List
        println(r)
         
    }
}

输出

List(20, 6, 2, 7, 3, 15)
  • 在这里, toList将把任何Traversable的集合转换成一个列表。

例子

// Scala program of Conversion operation
 
// Creating object
object Conversion
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating List of numbers
        val x = List(9, 10, 13, 15, 18, 19)
 
        // Converting a List to a Set
        val y = x.toSet
 
        // Displaying a Set
        println(y)
    }
}

输出

Set(10, 9, 13, 18, 19, 15)
  • 在这里,转换操作,即toSet将把任何Traversable的集合转换成一个集合。

例子

// Scala program of Conversion operation
 
// Creating object
object Conversion
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating Set of numbers
        val m = Set(2, 4, 6, 8, 11, 15)
 
        // Converting a Set to a Sequence
        val n = m.toSeq
 
        // Displaying a Sequence
        println(n)
    }
}

输出

ArrayBuffer(6, 2, 11, 8, 4, 15)
  • 在这里,转换操作,即toSeq,将任何Traversable的集合转换为一个序列。这里生成的序列在矢量中被利用。

例子

// Scala program of Conversion operation
 
// Creating object
object Conversion
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating Set of numbers
        val x = Set(8, 10, 13, 15, 18)
 
        // Converting a Set to an Iterable
        val y = x.toIterable
 
        // Displaying an iterable
        println(y)
    }
}

输出

Set(10, 13, 18, 8, 15)
  • 在这里,转换操作即toIterable(它遍历集合中的所有元素)将把任何Traversable的集合转换成Iterable。

例子:

// Scala program of Conversion operation
 
// Creating object
object Conversion
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating Set of numbers
        val x = Set(2, 4, 5, 6, 7, 9)
 
        // Converting a Set to an
        // Indexed sequence
        val y = x.toIndexedSeq
 
        // Displaying an Indexed sequence
        println(y)
    }
}

输出

Vector(5, 6, 9, 2, 7, 4)
  • 在这里,转换操作即toIndexedSeq将任何Traversable转换为一个索引序列。这里生成的索引序列可以在字符串和矢量中使用。

示例

// Scala program of Conversion operation
 
// Creating object
object Conversion
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating Set of numbers
        val x = Set(15, 17, 18, 19, 22, 25)
 
        // Converting a Set to a stream
        val y = x.toStream
 
        // Displaying a Stream
        println(y)
    }
}

输出

Stream(25, ?)
  • 在这里,转换操作即toStream将任何Traversable的集合转换为一个流。这个流被懒散地枚举出来。

例子

// Scala program of Conversion operation
 
// Creating object
object Conversion
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating a Set of parameters
        val x = Set("GfG" -> "CS portal", "Nidhi" -> "a Geek")
 
        // Converting a Set to a Map
        val y = x.toMap
 
        // Displaying a Map
        println(y)
    }
}

输出

Map(GfG -> CS portal, Nidhi -> a Geek)
  • 这里,toMap将把任何Traversable转换为Map。一个Set或一个List必须有参数。

  • 大小信息操作:
    大小信息操作是nonEmpty, isEmpty, hasDefiniteSize, 和size这些操作可以指定给定的操作是有限的还是无限的。

示例 :

// Scala program of Size info operation
 
// Creating object
object Sizeinfo
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating a map
        val x = Map("gfg" -> "cs", "nidhi" -> "geek")
 
        // Applying Size info operation
        val y = x.isEmpty
 
        // Displays true if map is
        // empty
        println(y)
    }
}

输出

false
  • 这里,isEmpty检查Traversable集合是否为空。如果元素集合是空的,那么它将打印出true,如果它不是空的,那么它将打印出false。

示例

// Scala program of Size info operation
 
// Creating object
object Sizeinfo
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating a map
        val x = Map("gfg" -> "cs", "nidhi" -> "geek")
 
        // Applying Size info operation
        val y = x.nonEmpty
 
        // Displays true if map is
        // not empty
        println(y)
    }
}

输出

true
  • 这里, nonEmpty检查Traversable集合是否包含元素。如果集合中有元素,那么它显示为true,否则为false。

例子:

// Scala program of Size info operation
 
// Creating object
object Sizeinfo
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating a map
        val q = Map("gfg" -> "cs", "nidhi" -> "geek",
                                    "geeta" -> "coder")
 
        // Applying Size info operation
        val r = q.size
 
        // Displays size of the Map
        println(r)
    }
}

输出

3
  • 在这里, size被用来评估可穿越集合的大小。

例子

// Scala program of Size info operation
 
// Creating object
object Sizeinfo
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating a map
        val q = Map("gfg" -> "cs", "nidhi" -> "geek",
                                    "geeta" -> "coder")
 
        // Applying Size info operation
        val r = q.hasDefiniteSize
 
        // Displays true if number of
        // elements in Map are finite
        println(r)
    }
}

输出

true
  • 这里, hasDefiniteSize被用来检查Traversable集合是否有有限元素。如果集合是有限的,那么它返回true,否则返回false。

  • 元素检索操作
    元素检索操作包括last, head, lastOption, headOption, 和 find 。 这些操作被用来检索Traversable集合的第一个或最后一个元素,或者检索与给定条件对应的第一个元素。

例子 :

// Scala program of Element
// retrieval operation
 
// Creating object
object Retrieval
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating a Set of numbers
        val x = Set(12, 13, 14, 15)
 
        // Applying element retrieval
        // operation
        val y = x.lastOption
 
        // Displays last element
        // of the Set
        println(y)
    }
}

输出

Some(15)
  • 这里,Traversable的最后一个元素由lastOption返回。所述的集合必须是有序的,如果集合中没有任何元素,那么将返回None。

例子

// Scala program of Element
// retrieval operation
 
// Creating object
object Retrieval
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating a Set of numbers
        val x = Set(12, 13, 14, 15)
 
        // Applying element retrieval
        // operation
        val y = x.last
 
        // Displays last element
        // of the Set
        println(y)
    }
}

输出

15
  • 这里,last将返回所述集合的最后一个元素。该集合必须是有序的,如果它不是有序的,那么将返回一些随机的元素。

例子

// Scala program of Element
// retrieval operation
 
// Creating object
object Retrieval
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating a List of numbers
        val q = List(12, 24, 36, 48)
 
        // Applying element retrieval
        // operation
        val r = q.head
 
        // Displays first element
        // of the List
        println(r)
    }
}

输出

12
  • 这里,如果Traversable集合是有序的,head将返回该集合的第一个元素;如果集合不是有序的,则返回任何随机元素。

例子

// Scala program of Element
// retrieval operation
 
// Creating object
object Retrieval
{
 
    // Main method
    def main(args: Array[String])
    {
 
        // Creating a List of numbers
        val x = List(8, 10, 21, 17, 29)
 
        // Applying element retrieval
        // operation
        val y = x.find(_ % 3 == 0)
 
        // Displays first element
        // matching the condition
        println(y)
 
    }
}

输出

Some(21)
  • 在这里, find将检索出集合中符合所述条件的第一个元素。

例子:

// Scala program of Element
// retrieval operation
 
// Creating object
object Retrieval
{
 
    // Main method
    def main(args: Array[String])
    {
     
        // Creating List of numbers
        val p = List(7, 9, 11, 19, 21)
 
        // Creating a empty List
        val q = List()
 
        // Applying element retrieval
        // operation
        val r = p.headOption
        val s = q.headOption
 
        // Displays first element
        // if the List is not empty
        println(r)
        println(s)
    }
}

输出

Some(7)
None
  • 这里, headOption返回有序集合的第一个元素,但如果集合为空,则返回None。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程