Scala Trait Traversable | Set-2

Scala Trait Traversable | Set-2

在上一个集合中,我们已经看到了Class Taversable执行的一些操作。 现在,在这个集合中,我们将理解更多的操作。
这些操作如下:

  • 转换操作:
    转换操作是 toList,toSeq,toArray,toStream,toSet,toMap,toIterable和toIndexedSeq 。这些操作将Traversable集合转换为一个相对不同的东西。
    例如 :
// 转换操作的Scala程序
// 创建对象
object Conversion
{
// 主方法
def main(args: Array[String])
{
// 创建数字集Set
val q = Set(2, 7, 8, 15, 19)
// 将Set转换为数组
val r = q.toArray
// 显示数组
println(r)
}
}

输出:

[I@506e1b77
  • 这里,转换操作即 toArray 将上述Set(或任何Traversable)转换为一个数组。
    例如:
// 转换操作的Scala程序
// 创建对象
object Conversion
{
// 主方法
def main(args: Array[String])
{
// 创建数字集Set
val q = Set(2, 6, 3, 7, 15, 20)
// 将一个Set转换成一个列表
val r = q.toList
// 显示列表
println(r)
}
}

输出:

List(20, 6, 2, 7, 3, 15)
  • 这里, toList 将Traversable的任何集合转换为列表。
    例如:
// 转换操作的Scala程序
// 创建对象
object Conversion
{
// 主方法
def main(args: Array[String])
{
// 创建数字列表
val x = List(9, 10, 13, 15, 18, 19)
// 将列表转换为Set
val y = x.toSet
// 显示Set
println(y)
}
}

输出:

Set(10, 9, 13, 18, 19, 15)
  • 这里,转换操作即, toSet 将Traversable的任何集合转换为Set。
    例如:
// 转换操作的Scala程序
// 创建对象
object Conversion
{
// 主方法
def main(args: Array[String])
{
// 创建数字集Set
val m = Set(2, 4, 6, 8, 11, 15)
// 将Set转换为序列
val n = m.toSeq
// 显示序列
println(n)
}
}

输出:

ArrayBuffer(6, 2, 11, 8, 4, 15)
  • 这里,转换操作即, toSeq 将Traversable的任何集合转换为序列。 生成的序列用于向量中使用。
    例如:
// Scala中的转换操作
 
// 创建对象
object Conversion
{
 
    // 主方法
    def main(args: Array[String])
    {
 
        // 创建数字的Set
        val x = Set(8, 10, 13, 15, 18)
 
        // 将Set转换为Iterable
        val y = x.toIterable
 
        // 显示Iterable
        println(y)
    }
}

输出:

Set(10, 13, 18, 8, 15)
  • 这里的 Conversion 操作即为 toIterable(遍历集合的所有元素),可以将 Traversable 的任何集合转换为 Iterable。
    例:
// Scala中的转换操作
 
// 创建对象
object Conversion
{
 
    // 主方法
    def main(args: Array[String])
    {
 
        // 创建数字的Set
        val x = Set(2, 4, 5, 6, 7, 9)
 
        // 将Set转换为Indexed序列
        val y = x.toIndexedSeq
 
        // 显示Indexed序列
        println(y)
    }
}

输出:

Vector(5, 6, 9, 2, 7, 4)
  • 这里的Conversion操作即为toIndexedSeq,可以将任何Traversable转换为 Indexed序列。此处生成的Indexed序列用于字符串和向量。
    例:
// Scala中的转换操作
 
// 创建对象
object Conversion
{
 
    // 主方法
    def main(args: Array[String])
    {
 
        // 创建数字的Set
        val x = Set(15, 17, 18, 19, 22, 25)
 
        // 将Set转换为Stream
        val y = x.toStream
 
        // 显示Stream
        println(y)
    }
}

输出:

Stream(25, ?)
  • 这里的Conversion操作即为 toStream,可以将任何Traversable的集合转换为Stream。该Stream会被惰性枚举。
    例:
// Scala中的转换操作
 
// 创建对象
object Conversion
{
 
    // 主方法
    def main(args: Array[String])
    {
 
        // 创建一个包含参数的Set
        val x = Set("GfG" -> "计算机门户网站", "Nidhi" -> "一个极客")
 
        // 将Set转换为Map
        val y = x.toMap
 
        // 输出Map
        println(y)
    }
}

输出:

Map(GfG -> 计算机门户网站, Nidhi -> 一个极客)
  • 这里的toMap可以将任何Traversable转换为Map。Set或List必须有参数。

  • 大小信息操作:
    大小信息操作包括 nonEmpty、isEmpty、hasDefiniteSize 和 size。这些操作可以指定给定操作是否是有限的或无限的。
    例:

// Scala中的大小信息操作 // 创建对象 object Sizeinfo { // 主方法 def main(args: Array[String]) { // 创建Map val x = Map(“gfg” -> “cs”, “nidhi” -> “geek”) // 应用大小信息操作 val y = x.isEmpty // 如果Map为空,则输出true println(y) } }
“`

输出:

false
  • 这里, isEmpty 检查可遍历的集合是否为空。如果元素集合为空,则打印true,否则打印false。
    示例:
// Scala程序大小信息操作
 
// 创建对象
object Sizeinfo
{
 
    // 主方法
    def main(args: Array[String])
    {
 
        // 创建映射
        val x = Map("gfg" -> "cs", "nidhi" -> "geek")
 
        // 应用大小信息操作
        val y = x.nonEmpty
 
        // 如果映射不为空,则显示true
        println(y)
    }
}

输出:

true
  • 这里, nonEmpty 检查可遍历的集合是否包含元素。如果集合中有元素,则显示true,否则显示false。
    示例:
// Scala程序大小信息操作
 
// 创建对象
object Sizeinfo
{
 
    // 主方法
    def main(args: Array[String])
    {
 
        // 创建映射
        val q = Map("gfg" -> "cs", "nidhi" -> "geek",
                                    "geeta" -> "coder")
 
        // 应用大小信息操作
        val r = q.size
 
        // 显示映射的大小
        println(r)
    }
}

输出:

3
  • 这里, size 用于评估可遍历集合的大小。
    示例:
// Scala程序大小信息操作
 
// 创建对象
object Sizeinfo
{
 
    // 主方法
    def main(args: Array[String])
    {
 
        // 创建映射
        val q = Map("gfg" -> "cs", "nidhi" -> "geek",
                                    "geeta" -> "coder")
 
        // 应用大小信息操作
        val r = q.hasDefiniteSize
 
        // 如果Map中的元素数量为有限,则显示true
        println(r)
    }
}

输出:

true
  • 这里, hasDefiniteSize 用于检查可遍历集合是否具有有限元素。如果集合是有限的,则返回true,否则返回false。

  • 元素检索操作:
    元素检索操作包括 last、head、lastOption、headOption和find 。这些操作用于检索可遍历集合的第一个或最后一个元素,或检索与给定条件相对应的第一个元素。
    示例:

// Scala程序元素检索操作
 
// 创建对象
object Retrieval
{
 
    // 主方法
    def main(args: Array[String])
    {
 
        // 创建数字集合
       val x = Set(12, 13, 14, 15)

        // 应用元素检索操作
        val y = x.lastOption

        // 显示集合的最后一个元素
        println(y)
    }
}

输出:

Some(15)
  • 这里,使用 lastOption 返回可遍历的最后一个元素。如果集合中没有元素,则返回None。
    示例:
// Scala中的Element检索操作示例
 
// 创建对象
object Retrieval
{
 
    // 主函数
    def main(args: Array[String])
    {
 
        // 创建数字的Set
        val x = Set(12, 13, 14, 15)
 
        // 应用元素检索操作
        val y = x.last
 
        // 显示Set的最后一个元素
        println(y)
    }
}

输出:

15
  • 这里的 last 会返回所述集合的最后一个元素。集合必须被排序,否则返回某个随机元素。
    示例:
// Scala中的元素检索操作示例
 
// 创建对象
object Retrieval
{
 
    // 主函数
    def main(args: Array[String])
    {
 
        // 创建数字的List
        val q = List(12, 24, 36, 48)
 
        // 应用元素检索操作
        val r = q.head
 
        // 显示List的第一个元素
        println(r)
    }
}

输出:

12
  • 这里的 head 会返回Traversable集合的第一个元素,如果它被排序并且该集合无序,则返回任意随机元素。
    示例:
// Scala中的元素检索操作示例
 
// 创建对象
object Retrieval
{
 
    // 主函数
    def main(args: Array[String])
    {
 
        // 创建数字的List
        val x = List(8, 10, 21, 17, 29)
 
        // 应用元素检索操作
        val y = x.find(_ % 3 == 0)
 
        // 显示满足条件的第一个元素
        println(y)
 
    }
}

输出:

Some(21)
  • 这里的 find 将检索集合中满足指定条件的第一个元素。
    示例:
//Scala中的元素检索操作示例
 
// 创建对象
object Retrieval
{
 
    // 主函数
    def main(args: Array[String])
    {
     
        // 创建数字的List
        val p = List(7, 9, 11, 19, 21)
 
        // 创建空List
        val q = List()
 
        // 应用元素检索操作
        val r = p.headOption
        val s = q.headOption
 
        // 如果List不为空则返回第一个元素
        println(r)
        println(s)
    }
}

输出:

Some(7)
None
  • 这里的 headOption 返回有序集合的第一个元素,但如果集合为空则返回 None
    阅读更多:Scala 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程