【第12章】配列とは?forの組み合わせ方やwithIndexについても詳しく解説

【第12章】配列(Array)について詳しく解説 基礎勉強
スポンサーリンク
リンコ
リンコ

こんにちは!リンコですピヨ!この記事では自分の勉強の復習もかねて、Kotlinでの配列(Array)を記述する方法を解説するピヨ!

この第12章では、プログラミング言語であるKotlinの配列(Array)について、一緒に勉強していきましょう。

この記事を読めばプログラミング未経験の方も、Kotlin入門レベルの配列(Array)について1つ1つ理解しながら勉強できると思うので、是非最後まで読んで頂ければと思います。

※この記事で出てくる「サンプルコード」は、記述が長く画面からはみ出ている場合がありますが、横にスライドすると表示されるのでご安心ください。

スポンサーリンク

【Kotlin】配列とは?

配列とは?

まず配列とは、どのような処理を行うものなんでしょうか?配列の使い方を勉強する前に、配列がどういった処理を行うものなのかを勉強していきましょう。

変数をまとめて管理するもの

Int型やString型など、同じタイプの変数をまとめて管理したい時に「配列」という仕組みを使います。

配列は、型を入れる「箱」がまとまってくっついているようなイメージになります。

例えば、3つの変数が入っている配列であれば「3つの箱がまとまってくっついている」というような感じです。

別々の型の変数はまとめられない

変数をまとめて管理するものですが、別の型の変数をまとめることはできません

Int型の配列であればInt型の変数のみ、Double型の配列であればDouble型の変数のみをまとめることができます。

リンコ
リンコ

配列は同じ型の変数をまとめて管理する時に使うピヨ!

【Kotlin】配列を使ってみよう

配列を使ってみよう

では実際に、同じタイプの変数がまとまった「配列」の使い方を勉強していきましょう。ここでの配列は、例としてInt型を使っていきます。

配列の書式

まず配列を使う場合の書式は以下になります。

val 配列名: IntArray = intArrayOf(値1,値2,値3...)

Arrayという機能を使う

Kotlinでは「Array」という機能を使うことで、配列の仕組みを使用することができます。

上記の書式の「IntArray」は「Int型の配列」という意味になります。また値の「()」の前に「intArrayOf」と記述することで、値を複数入れることができます。

値はコンマで区切る

複数の値は、コンマ(,)で区切るようにします。「、」や「.」で区切ってしまうとエラーになるので注意しましょう。

配列の値には番号がふられている

配列のそれぞれの値には番号が振られています。

その番号のことを「インデックス」と言うのですが、先頭から番号は「1」ではなく「0」になるので注意しましょう。

リンコ
リンコ

配列のインデックス番号は「0」から始まるので注意するピヨ!

配列を使ったコードを記述してみよう

では実際に配列を使ったコードを記述してみましょう。

サンプルコード

以下のサンプルコードでは、moneyという配列に3人分の給料の額を格納しています。

val money : IntArray = intArrayOf(180000,200000,220000)

上記では、整数の値を配列に格納しているので「IntArray」や「intArrayOf」となっています。これでInt型の配列moneyが作られました。

配列のコードも省略できる

上記はIntArray型ですが、配列の型も「型推論」の機能で省略することができます。

サンプルコード

以下のサンプルコードでは、型推論を使ってコードを省略して、moneyという配列に3人分の給料の額を格納しています。

val money = intArrayOf(180000,200000,220000)

このように「: IntArray」の部分を省略して、簡潔に記述することができました。

※ここからは、全て型推論を使ってサンプルコードを記述していきます

リンコ
リンコ

配列でも型推論が使えるピヨ!

【Kotlin】配列の値を取り出してみよう

配列の値を取り出してみよう

配列の作り方がわかったところで、今度は配列の値を取り出してみましょう。

配列の値を取り出す書式

配列の値を取り出す場合の書式は以下のようになります。

配列名[インデックス]

このように配列の名前の後に[]でインデックスを囲うことで、特定の値を取り出すことができます。

配列を取り出すコードを記述してみよう

では実際に、コードを記述して配列の値を取り出してみましょう。

サンプルコード

以下のサンプルコードでは、先程のmoneyという配列に格納された給料を、それぞれ取り出しています。

val money = intArrayOf(180000,200000,220000)
println("1人目の給料は${money[0]}円です。")
println("2人目の給料は${money[1]}円です。")
println("3人目の給料は${money[2]}円です。")

出力

サンプルコードを実行すると、以下のように出力されます。

1人目の給料は180000円です。
2人目の給料は200000円です。
3人目の給料は220000円です。

1人目の給料では[0]と指定されているので、配列の1つ目の「180000」と表示され、その後もインデックス通りに表示されていることがわかりますね。

リンコ
リンコ

配列の値を取り出すときは「配列名[インデックス番号]」と記述するピヨ!

【Kotlin】配列はforと組み合わせると便利

配列はforと組み合わせると便利

配列は、forと組み合わせると良い感じに使うことができます。なぜ組み合わせると良いのか、どのように記述するのかを勉強していきましょう。

forと組み合わせると便利な理由

for文は、順番に同じような処理を繰り返し行うための構文です。それに合わせ、配列は同じようなデータを順番に保存しておくための仕組みです。

forは順番に繰り返す、配列は順番にデータを保存すると両方とも「順番」という仕組みから配列とforは相性が良く、組み合わせることで複雑な内容のコードを簡潔に記述することができます。

forを使った配列のコードを記述してみよう

では実際にforと配列を組み合わせたコードを記述してみましょう。

サンプルコード

以下のサンプルコードでは、先程の3人分の給料の表示をforを使って簡潔に記述しています。

val money = intArrayOf(180000,200000,220000)
// forで変数indexに0~2が代入されるまで繰り返し処理
for(index in 0..2) {
  println("${index+1}人目の給料は${money[index]}円です。")
}

出力

サンプルコードを実行すると、以下のように出力されます。

1人目の給料は180000円です。
2人目の給料は200000円です。
3人目の給料は220000円です。

先程のコードではprintln関数を3回記述していたところ、今回は1回記述するだけになりましたが同じ結果になり、簡潔に記述できていることがわかります。

数行ならprintln関数をコピペすればなんとかなりそうですが、もし「100人分の給料を表示する処理を記述して」と言われると面倒になりますよね。

そういった場合は、forと配列を組み合わせるようにしましょう。

リンコ
リンコ

配列とforを組み合わせることで長文のコードも簡潔に記述できるピヨ!

forと配列の組み合わせをさらに安全且つ簡潔に記述

このようにforと配列の組み合わせは便利ですが、上記のコードではバグが起こりやすいという欠点もあります。

その理由は、例えば配列の中身の値が3つから5つに増えたり逆に減ってしまった場合です。

値を増減させると「for(index in 0..2)」の数字を変更しなければいけませんが、忘れてしまう可能性があります。

そうするとバグが発生してしまいます。バグが発生しないように且つ、簡潔に記述するには以下のようにします。

サンプルコード

以下のサンプルコードでは、forの条件箇所に配列名を直接記述しています。

val money = intArrayOf(180000,200000,220000)
// 配列moneyの中身が変数printに代入されるまで繰り返し処理
for(print in money) {
  println("給料は${print}円です。")
}

出力

サンプルコードを実行すると、以下のように出力されます。

給料は180000円です。
給料は200000円です。
給料は220000円です。

このようにforの条件に配列名を直接記述することで、配列の中身が繰り返し代入されるようになります。

しかしこうすると、最初のように1人目や2人目という記述ができなくなりました。

【Kotlin】withIndexを使ってスマートに記述してみよう

withIndexを使ってスマートに記述してみよう

同じように〇人目も表示したい場合には「withIndex」を使っていきます。

withIndexとは?

withIndexは、forでの繰り返し処理の際によく使われるのですが、withIndexを使うことで配列の値とインデックス番号の2つの要素を使って処理を記述することができます。

ですのでwithIndexを使えば、今回の「〇人目の給料」もスマートに記述できるようになります。

withIndexを使った書式

withIndexを使う場合の書式は以下のようになります。

for((変数名1, 変数名2) in 配列名.withIndex()) {
    処理内容
}

このようにforの条件の「in」の左側には変数を2つ記述します。1つ目の変数にはインデックス番号が、2つ目の変数には値が代入されます。

inの右側には「配列名.withIndex()」と記述します。このように記述することで、配列の値とインデック番号の2つの要素を使って処理を行うことができます。

withIndexを使った配列のコードを記述してみよう

では実際にwithIndexを使ったコードを記述してみましょう。

サンプルコード

以下のサンプルコードでは、withIndexを使って簡潔に最初と同じように3人分の給料の額を表示します。

val money1 = intArrayOf(180000,200000,220000)
// 変数indexにはインデックス番号、money2には給料が代入される
for((index, money2) in money1.withIndex()) {
  println("${index+1}人目の給料は${money2}円です。")
}

出力

サンプルコードを実行すると、以下のように出力されます。

1人目の給料は180000円です。
2人目の給料は200000円です。
3人目の給料は220000円です。

withIndexを使うことで「〇人目の給料は〇円です」と簡潔に記述できたことがわかります。

リンコ
リンコ

withIndexを使うことで、より複雑なコードが簡潔に記述できるピヨ!

【Kotlin】配列はInt型以外の型でも使える

配列はInt型以外の型でも使える

ここまでの配列の勉強ではInt型を例に説明していきましたが、配列はInt型以外のBoolean型やDouble型など様々な型で使うことができます

Int型以外の型を使った配列の書式

Int型以外の型を使った書式は以下のようになります。

val 配列名: 型名Array = 型名ArrayOf(配列の値)

基本的に「Array」や「ArrayOf」の前の型名を変えるだけでオッケーです。

String型は少し違う記述になる

ただし、String型のみ少し記述が異なるので注意が必要です。String型の配列の書式は以下のようになります。

val 配列名 = arrayOf(配列の値)

このようにString型は、他の型に比べて簡潔な書式になっています。

まとめ

まとめ

この記事では、プログラミング言語であるKotlinの配列(Array)について勉強していきましたが、いかがでしたでしょうか?今回の記事をまとめると以下のようになります。

  • 同じ型の変数をまとめて管理するのが配列
  • 配列にはインデックス番号が振られていて1つ目は「0」から始まる
  • インデックス番号を指定することで値を取り出すことができる
  • 配列とforは似た性質から、相性が良く組み合わせることでコードを簡潔にできる
  • withIndexを使うことで、複雑なコードが簡潔に記述できる

今回勉強した「配列(Array)」や「withIndex」はKotlinの入門レベルの知識になるので、何回も読み直してしっかり覚えておきましょう。

リンコ
リンコ

次回の記事では「ListとMutableList」について勉強していくピヨ!

プログラミング未経験の方や入門レベルの方、Kotlinについて詳しくなりたい方は、また一緒に勉強するピヨ!

コメント

タイトルとURLをコピーしました