Scala で要素の配列サイズを求める
この記事では、配列内の要素のサイズを求める方法について説明します。まず、アレイのサイズを取得する方法を理解してから、その概念を拡張して、アレイ内に存在する要素のサイズを取得しましょう。
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
4つの要素を含み、1つの要素が配列である配列 myArr
を宣言しました。次に、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
上記のコードでは、いくつかの要素を含む 3つの配列を宣言し、size
演算子を使用してそれぞれのサイズを取得しました。
Scala のアレイ内の要素のサイズを取得する
さまざまな要素の配列を作成すると、java.io.Serializable
で作成されます。
例:
myArr = Array("a", "b" , Array(11,22,33), "c")
ここで、myArr
の 2 番目の要素である 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
を使用して配列の 2 番目の要素を明示的にタイプキャストする必要があります。
コード例 1:
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
の 2 番目の要素のサイズを取得していることがわかります。
3
上記のコードでは、if
条件を使用して、最初に配列の 2 番目の要素のタイプとインスタンスを確認し、次に asInstanceOf
を使用してタイプキャストし、次に size
演算子を使用してそのサイズを取得します。
コード例 2:
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