Scala Trait Traversable | Set-1

Scala Trait Traversable | Set-1

介绍:
整个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 程序的抽象方法
  
//创建对象
object CS 
{
    //主方法
    def main(args: Array[String]) 
    {
        //创建元素的数组
        val x = Array("GEEKS", "FOR", "GEEKS")
  
        //调用 foreach 方法
        x.foreach { E =>
        val y = E.toLowerCase
  
        //显示字符串
        println(y)
        }
    }
}

输出:

geeks
for
geeks

在这里,foreach 方法遍历了上面数组的所有元素,然后将它们从大写转换为小写。
例如:

//Scala 程序的抽象方法
  
//创建对象
object GFG
{
    //主方法
    def main(args: Array[String]) 
    {
        //创建数字列表
        val l = List(2, 6, 8, 7, 10, 11, 13)
  
        //调用 foreach 方法并显示列表中每个数字乘以 6 后的结果
        l.foreach(n => println(n * 6))
    }
}

输出:

12
36
48
42
60
66
78

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

  1. 加法操作:
    在这里,加法操作即 ++ 将两个 Traversables 相加,或将迭代器的每个元素添加到 Traversable 中。
    例如:
//Scala 程序的加法操作
  
//创建对象
object GFG
{
    //主方法
    def main(args: Array[String]) 
    {
        //创建数字集合
        val x = Set(7, 8, 9, 10)
  
        //创建数字列表
        val y = List(1, 5, 8, 18)
  
        //执行加法操作
        val s1 = x ++ y
        val s2 = y ++ x
  
        //显示集合
        println(s1)
  
        //显示列表
        println(s2)
    }
}

输出:

Set(5, 10, 1, 9, 7, 18, 8)
List(1, 5, 8, 18, 7, 8, 9, 10)

在这里,当一个 Set 加上一个 List 时,将生成一个 Set;当一个 List 加上一个 Set 时,将生成一个 List。

  1. Map 操作:
    这三个 Map 操作是 map 、 flatMap 和 collect 。
    这些 Map 操作通过为 Scala 集合的元素分配一些函数来创建一个新的集合。
    例如:
//Scala 程序的 Map 操作
  
//创建对象
object GFG
{
  
    //主方法
    def main(args: Array[String]) 
    {
  
        //创建数字集合
        val x = Set(8, 9, 5, 10)
  
        //应用 map 操作
        val y = x.map(_ * 9)
  
        //显示集合
        println(y)
    }
}

输出:

Set(72, 81, 45, 90)

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

//Scala 程序的 Map 操作
  
//创建对象
object GFG
{
  
    //主方法
    def main(args: Array[String]) 
    {
  
        //创建列表
        val q = List(List(7), List(8, 9, 10), List(11, 12, 13))
  
        //应用 flatMap 操作
        val r = q.flatMap(_.map(_ + 3))
  
        //显示列表
        println(r)
    }
}

输出:

List(10, 11, 12, 11, 12, 13, 14, 15, 16)

在这里,flatMap 操作将指定函数分配给 Traversable 的每个元素,然后将返回一个新的集合作为输出。

List(10, 11, 12, 13, 14, 15, 16)

在这里, flatMap 将对元素内的每个元素分配所述函数,然后将串联输出。
示例:

// Scala程序-映射操作
  
//创建对象 
object GFG
{
  
    // 主方法
    def main(args: Array[String]) 
    {
  
        // 创建数字列表
        val x = List(9, 3, 5, 11, 15, 4)
  
        // 应用映射操作 
        val y = x.collect 
        {
  
            // 部分函数
            case z : Int if (z % 3 == 0) => z + 2
        }
  
        //显示列表
        println(y)
    }
}

输出结果:

List(11, 5, 17)

在这里, collect 将会分配一个部分函数给可遍历的每个元素,并给出一个非相同的集合作为输出。
阅读更多:Scala 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程