KotlinのforEachループで配列の現在のインデックスを取得する方法
配列を扱う際に、要素のインデックスにアクセスする必要がある場面は少なくありません。本記事では、KotlinでforEachループを使用しながら配列のインデックスと値を同時に取得する方法を2つ紹介します。
方法1:forEachIndexed()を使用する
通常のforEach()の代わりに、KotlinではforEachIndexed()を使用できます。forEachIndexedはインライン関数で、配列を入力として受け取り、インデックスと値をそれぞれ個別に取得できるのが特徴です。
次の例では、「subject」リストを走査し、各要素のインデックスと値を一緒に出力します。
サンプルコード
fun main() {
var subject = listOf("Java", "Kotlin", "JS", "C")
subject.forEachIndexed { index, element ->
println("index = $index, item = $element ")
}
}
出力結果
上記のコードを実行すると、次のような出力が得られます。
index = 0, item = Java index = 1, item = Kotlin index = 2, item = JS index = 3, item = C
方法2:withIndex()を使用する
withIndex()はKotlinの標準ライブラリが提供する関数で、配列(コレクション)のインデックスとそれに対応する値の両方にアクセスできます。次の例では、同じリストに対してwithIndex()を使用し、インデックスと値を出力します。なお、この関数はforループと組み合わせて使用する必要があります。
サンプルコード
fun main() {
var subject = listOf("Java", "Kotlin", "JS", "C")
for ((index, value) in subject.withIndex()) {
println("The subject of $index is $value")
}
}
出力結果
上記のコードを実行すると、次のような出力が得られます。
The subject of 0 is Java The subject of 1 is Kotlin The subject of 2 is JS The subject of 3 is C
まとめ
forEachIndexed()はラムダ式の中でインデックスと要素を直接受け取れるため、forEachスタイルの処理をそのまま活かしたい場合に便利です。一方、withIndex()はforループの分割宣言(Destructuring Declaration)と組み合わせることで、簡潔で読みやすいコードを書くことができます。用途に応じて使い分けることで、より効率的にインデックス付きの反復処理を実装できます。
-
AndroidでRadioGroupの選択されたインデックスを取得する方法【サンプルコード付き】
この記事では、AndroidアプリでRadioGroup(ラジオグループ)の中から選択されているRadioButtonのインデックスやテキストを取得する方法を、サンプルコードとともにステップ形式で解説します。 実装手順 ステップ1:新規プロジェクトを作成する Android Studioを起動し、メニューから「File」⇒「New Project」を選択して、必要な項目を入力し新しいプロジェクトを作成します。 ステップ2:レイアウトファイル(activity_main.xml)にコードを追加する res/layout/activity_main.xml に以下のコードを記述します。質問を表示す
-
C++とOpenCVで動画の現在のフレーム位置を取得する方法
「現在のフレーム」とは、動画を再生している際に画面に表示されているフレームのことを指します。これは「アクティブフレーム」とも呼ばれます。多くのアプリケーション開発では、現在表示中のフレーム番号を取得する必要が生じることがあります。OpenCVのVideoCaptureクラスには、CAP_PROP_POS_FRAMESプロパティを指定してget()メソッドを呼び出すことで、現在のフレーム位置(0から始まるインデックス)を取得する機能が用意されています。以下のプログラムは、動画の現在のフレーム位置を読み取り、コンソールウィンドウに表示します。サンプルコード#include<opencv2/o