【Kotlin】~ちょこっとメモ~「.indices」

調べたきっかけ

ListOf()で作成した2つのリストの各要素

別のMapのキーと値として格納する処理を書いていたところ、

for文の条件式で書いていた、

// 条件式:0~リストのサイズ(含まない)分繰り返す

for(i in 0 until nameList.size){  }

のところでAndroidStudioがヒントをくれた。

f:id:ukiuki0518:20191119110148p:plain

どうやら

「この部分は”.indices”で置き換えられますよ~」

とのことらしい。

ってことでちょっと調べてみた

.indices」は範囲を返す

詳しく書くと

コレクションのインデックス範囲を表す”IntRange”オブジェクトを返す

ということらしい。

・IntRangeオブジェクトにはInt値の範囲を格納できる型

//0~10までの範囲を格納できる
val ran: IntRange = 1..10

//for文などの条件式として使用できる
for(i in ran){ }

ってことで書き換えてみた

for(i in nameList.indices){ }
f:id:ukiuki0518:20191119113119p:plain
きれいになった

こりゃ便利!コレクションではこれを使っていこうと思う。

ちなみに

ちなみに条件式に、リストのサイズをそのまま

for(i in 0..nameList.size)

とすると、”インデックス”ではなく”要素数”を取得してしまうので

リストへのアクセス中にArrayIndexOutOfBoundsExceptionが発生する。