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类执行的操作如下:
- 抽象方法:
这里唯一的抽象方法是 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 方法遍历了列表中的所有数字并将它们相乘。
- 加法操作:
在这里,加法操作即 ++ 将两个 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。
- 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 教程