在 Scala 中查找元素的数组大小
Suraj P
2023年1月30日
本文将解释如何在数组中查找元素的大小。首先,让我们了解如何获取数组的大小,然后扩展该概念以获取数组中存在的元素的大小。
Scala 中的 length
和 size
运算符
length
运算符
语法:
array_name.length
我们可以使用 Scala 的 length
运算符来计算 Scala 中数组的长度。它返回数组中元素的数量。
让我们举个例子来更好地理解它。
示例代码:
object MyClass {
def main(args: Array[String]) {
val myArr = Array("a", "b", Array(1,2,3,4,5,6), "c")
println(myArr.length)
}
}
输出:
4
我们已经声明了一个数组 myArr
,它包含 4 个元素,其中一个元素是一个数组。然后我们使用 length
运算符来获取数组的长度。
size
运算符
我们可以使用数组的 size
属性来获取它的大小。它返回数组包含的元素数。
它与数组的 length
属性非常相似。
语法:
array_name.size
让我们看一个例子来更好地理解它。
示例代码:
object MyClass {
def main(args: Array[String]) {
val myArr1 = Array(3, 2, 5, 7)
val fruits = Array("Apple", "Orange",Array("watermelon","tomato"))
val rate : Array[Double] = Array(4.6, 7.8, 9.5, 4.5)
println(myArr1.size)
println(fruits.size)
println(rate.size)
}
}
输出:
4
3
4
在上面的代码中,我们声明了三个包含一些元素的数组,并且我们使用了 size
运算符来获取它们各自的大小。
在 Scala 中获取数组内元素的大小
当我们创建一个不同元素的数组时,它是用 java.io.Serializable
创建的。
例子:
myArr = Array("a", "b" , Array(11,22,33), "c")
现在,如果我们引用 myArr
的第二个元素 Array(11,22,33)
,它的引用将是 Serializable
,并且没有 length
或 size
。如果我们尝试使用它们,我们会得到错误。
示例代码:
object MyClass {
def main(args: Array[String]) {
val myArr = Array("a", "b", Array(11,22,33), "c")
println(myArr(2).size)
}
}
输出:我们可以看到我们得到了错误。
error: value size is not a member of java.io.Serializable
println(myArr(2).size)
为了解决这个问题,我们必须使用 asInstanceOf
显式地对数组的第二个元素进行类型转换。
示例代码一:
object MyClass {
def main(args: Array[String]) {
val myArr = Array("a", "b", Array(11,22,33), "c")
if (myArr(2).isInstanceOf[Array[Int]])
println(myArr(2).asInstanceOf[Array[Int]].size)
}
}
输出:我们可以看到我们得到了数组 myArr
的第二个元素的大小。
3
在上面的代码中,使用 if
条件,首先我们检查数组第二个元素的类型和实例,然后我们使用 asInstanceOf
进行类型转换,然后使用 size
运算符获取它的大小.
示例代码二:
object MyClass {
def main(args: Array[String]) {
val myArr = Array("a", List("tony","stark","hulk","iron man"), "c")
if (myArr(1).isInstanceOf[List[String]])
println(myArr(1).asInstanceOf[List[String]].size)
}
}
输出:
4
作者: Suraj P