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 教程