📜  Scala Trait 可遍历 |第一组

📅  最后修改于: 2022-05-13 01:54:35.558000             🧑  作者: Mango

Scala Trait 可遍历 |第一组

介绍:
Scala 集合的整个类的一个根特征是Trait Traversable 。它位于集合层次结构的最高位置。它有唯一的一个抽象操作,即foreach 。这里确保每个操作都以单线程方法执行。
句法:

def foreach[U](f: Elem => U)

这里,操作f涉及集合的所有元素, Elem => U是操作的类型,其中“Elem”是 Scala 集合中元素的类型,“U”是不一致的结果类型。

一些要点:

  • Traversable 由 Scala 的 Collection 类完成。
  • Traversable 必须只定义foreach方法,因为 Traversable 可以继承所有其他方法。
  • foreach方法可以遍历 Scala 集合类的所有元素。
  • Traversables 定义了许多具体的方法。
  • List、Array、Map、Set 等等都是 Traversables 的子类。
类 Traversable 执行的操作如下:
  1. 抽象方法:
    这里唯一的抽象方法是foreach ,它可以遍历 Collection 的所有元素。
    例子 :
    //Scala program of abstract method
      
    //Creating object 
    object CS 
    {
        //Main method
        def main(args: Array[String]) 
        {
            //Creating an Array of elements
            val x = Array("GEEKS", "FOR", "GEEKS")
      
            //Calling foreach method
            x.foreach { E =>
            val y = E.toLowerCase
      
            //Display strings
            println(y)
            }
        }
    }
    
    输出:
    geeks
    for
    geeks
    

    在这里,上面所说的Array的所有元素都通过foreach方法遍历,然后将它们从大写转换为小写。
    例子:

    // Scala program of abstract method
      
    // Creating object 
    object GFG
    {
        // Main method
        def main(args: Array[String]) 
        {
            //Creating list of numbers
            val l = List(2, 6, 8, 7, 10, 11, 13)
      
            //Calling foreach and displaying
            //numbers of list after 
            //multiplication each of them
            l.foreach(n => println(n * 6))
        }
    }
    
    输出:
    12
    36
    48
    42
    60
    66
    78
    

    在这里,foreach 方法遍历列表的所有数字并将它们中的每一个相乘。

  2. 加法运算:
    这里,加法运算,即++将两个Traversables相加或将迭代器的每个元素添加到Traversable中。
    例子:
    // Scala program of addition operation
      
    // Creating object 
    object GFG
    {
        // Main method
        def main(args: Array[String]) 
        {
            // Creating set of numbers
            val x = Set(7, 8, 9, 10)
      
            // Creating list of numbers
            val y = List(1, 5, 8, 18)
      
            //performing addition operation
            val s1 = x ++ y
            val s2 = y ++ x
      
            //Displaying set
            println(s1)
      
            //Displaying list 
            println(s2)
        }
    }
    
    输出:
    Set(5, 10, 1, 9, 7, 18, 8)
    List(1, 5, 8, 18, 7, 8, 9, 10)
    

    这里,当一个集合被添加到一个列表时,一个集合被生成,当一个列表被添加到一个集合时,一个列表被生成。

  3. 地图操作:
    三个 Map 操作是mapflatMapcollect
    这些 Map 操作通过为 Scala 集合的元素分配一些函数来创建一个新集合。
    例子 :
    // Scala program of Map operations
      
    // Creating object 
    object GFG
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating Set of numbers
            val x = Set(8, 9, 5, 10)
      
            // Applying map operation
            val y = x.map(_ * 9)
      
            // Displaying Set 
            println(y)
        }
    }
    
    输出:
    Set(72, 81, 45, 90)
    

    在这里,Map 操作(即 map)将为 Traversable 的每个元素分配指定的函数,并将返回一个新集合作为输出。
    例子 :

    // Scala program of Map operations
      
    // Creating object 
    object GFG
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating a List of lists
            val q = List(List(7), List(8, 9, 10), List(11, 12, 13))
      
            // Applying map operation
            val r = q.flatMap(_.map(_ + 3))
      
            // Displaying List
            println(r)
        }
    }
    
    输出:
    List(10, 11, 12, 13, 14, 15, 16)
    

    在这里, flatMap将为元素中的每个元素分配指定的函数,然后将输出连接起来。
    例子 :

    // Scala program of Map operations
      
    // Creating object 
    object GFG
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers
            val x = List(9, 3, 5, 11, 15, 4)
      
            // Applying map operation 
            val y = x.collect 
            {
      
                // Partial function
                case z : Int if (z % 3 == 0) => z + 2
            }
      
            //Displaying list
            println(y)
        }
    }
    
    输出:
    List(11, 5, 17)
    

    在这里, collect将为 Traversable 的每个元素分配一个偏函数,并给出一个不相同的集合作为输出。