【Kotlin/Android】配列(list)のインデックスを指定して安全に値を取得する方法!getOrNull/getOrElse

この記事からわかること
- Kotlin/Android Studioで配列(リスト)から安全に要素を取得する方法
- インデックスを指定して取得するには?
- getOrNull/getOrElseメソッドの使い方
- java.lang.IndexOutOfBoundsExceptionエラーとは?
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
配列のインデックス(要素番号)を指定して値を取得する
Kotlinで配列のインデックス(要素番号)を指定して値を取得するには[要素番号]
形式で記述します。
var list = listOf(1,2,3,4,5,6,7,8,9,10)
println(list[3]) // 4
java.lang.IndexOutOfBoundsExceptionエラー
[要素番号]
形式の記述方法は配列の個数以上の値を渡すこともできてしまい、範囲外にアクセスするとjava.lang.IndexOutOfBoundsExceptionエラーが発生しアプリがクラッシュしてしまいます。
var list = listOf(1,2,3,4,5,6,7,8,9,10)
println(list[100]) // java.lang.IndexOutOfBoundsException
これを防ぐためには後述するgetOrNull
/getOrElse
メソッドを使用します。
範囲外ならnullを取得する:getOrNull
Kotlinで配列に存在するならその値を範囲外ならnullを取得するするにはgetOrNull
メソッドを使用します。
var list = listOf(1,2,3,4,5,6,7,8,9,10)
println(list.getOrNull(100)) // null
範囲外ならデフォルト値を取得する:getOrNull
Kotlinで配列に存在するならその値を範囲外ならデフォルト値を取得するするにはgetOrElse
メソッドを使用します。
var list = listOf(1,2,3,4,5,6,7,8,9,10)
println(list.getOrElse(100) { 0 }) // 0
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。