配列クラスの contentToString メソッド
配列を扱うためのクラスである Array<T> や IntArray などのインスタンスを、println() などで出力しようとすると、JVM 表現で分かりにくい文字列が出力されてしまいます(例: [I@2c7b84de)。
このような場合は、Kotlin が拡張関数として用意している contentToString() メソッドを使用すると、読みやすい形式で配列の内容を出力できます。
// ジェネリック型配列の場合
val arr1: Array<Int> = arrayOf(1, 2, 3)
println(arr1)
println(arr1.contentToString())
// プリミティブ型配列の場合も同様
val arr2: IntArray = intArrayOf(1, 2, 3)
println(arr2)
println(arr2.contentToString())[Ljava.lang.Integer;@31befd9f
[1, 2, 3]
[I@2c7b84de
[1, 2, 3]ちなみに、contentToString() 拡張関数の実装は、java.util.Arrays.toString(this) を呼び出しているだけです。
List/Set/Map はデフォルトで綺麗に出力される
List や Set、Map などのジェネリッククラスは、このようなことをしなくても、デフォルトの toString() が見やすい出力をしてくれます(継承元の AbstractCollection.toString() などで実装されています)。
val list: List<Int> = listOf(1, 2, 3)
println(list) //=> [1, 2, 3]
val set: Set<Int> = setOf(1, 2, 3)
println(set) //=> [1, 2, 3]
val map: Map<String, Int> = mapOf("one" to 1, "two" to 2)
println(map) //=> {one=1, two=2}