Java道|配列でデータをまとめて扱う

たくさんのデータも、配列を使えば一つの隊列のように整えて扱える。

Javaで学習を進めていくと、同じ種類のデータをたくさんまとめて扱いたい場面がよく出てきます。

たとえば、隊士たちの訓練点数、7日分の気温、12か月分の売上、対戦相手ごとの得点記録などです。
こうした値を1つずつ別々の変数で持たせようとすると、変数の数がどんどん増えてしまい、コード全体が見づらくなりやすいです。

そこで活躍するのが配列です。

配列は、同じ型のデータをひとまとめにして扱える仕組みです。
この考え方を身につけると、たくさんの値を整理しやすくなり、繰り返し処理とも組み合わせやすくなります。
Javaらしいプログラムを書くための、とても大切な土台の1つです。

鬼滅の刃風にたとえると、配列は「同じ任務札を種類ごとに整列させて保管する棚」のようなものです。
1枚ずつ床にばらばらに置いておくと探しにくく、数えるのも大変です。
でも、番号付きの棚に順番にしまっておけば、どこに何があるのかがすぐにわかります。

ここでは、配列とは何か、なぜ便利なのか、どんな場面で使うのか、変数との違いは何かを、鬼滅の刃風の世界観も交えながら、ていねいに整理していきます。

↓クリックすると拡大表示されます。

たくさんの値を1つずつ変数で管理すると大変になる

配列の便利さをつかむには、まず配列を使わない場合を考えるとわかりやすいです。

もし50人分の点数を管理したいとき、1人ずつ別の変数で持つと、変数名が大量に必要になります。
しかも、そのあとに合計を出したり、平均を求めたり、全員分を順番に確認したりする処理も、とても書きづらくなります。

こうしたやり方には、いくつかの困りごとがあります。

問題点内容
コードが長くなる似たような宣言が大量に並び、見通しが悪くなる
ミスが起きやすい変数名の打ち間違いや取り違えが起きやすい
処理を書きにくい合計、平均、最大値などを求める処理が面倒になる
管理しにくいデータ数が変わるたびに修正が増える

鬼滅の刃風にたとえると、50人分の訓練記録を、1枚ずつばらばらの紙で持ち歩くようなものです。
1枚なら問題ありませんが、50枚になると探すのも並べるのも大変です。
しかも、全員分の合計を知りたいときには、1枚ずつ見比べながら数えることになります。

こういう場面で、配列がとても役立ちます。

配列とは何か

配列は、同じ型の値を複数まとめて記憶するための仕組みです。

ふつうの変数は、1つの名前に対して1つの値を入れる入れ物です。
それに対して配列は、1つの配列名で、複数の値を並べて持つことができます。

たとえば、5人分の点数をまとめるなら、1つの配列の中に5個の点数を入れるイメージです。

入れ物の種類持てる値
変数1つの値
配列同じ型の値を複数

つまり、配列は「同じ種類のデータを並べて管理するための特別な入れ物」です。

鬼滅の刃風にたとえると、変数は1人用の小さな刀袋です。
一方、配列は同じ種類の装備を横一列に並べて保管できる棚です。
個別に管理するよりも、まとめて扱うのがぐっと楽になります。

配列を身近なイメージで考えてみよう

配列は、同じ形の引き出しが横に並んでいる棚として考えると、とてもイメージしやすいです。

1つ1つの引き出しには1つずつ値が入ります。
そして、それぞれの引き出しには場所を示す番号が付いています。

たとえば、5人分の点数を入れた棚は、次のようなイメージです。

位置入っている値
080
160
222
390
435

ここで大切なのは、最初の位置が 1 ではなく 0 から始まることです。
この位置番号を添字と呼びます。

Javaの配列では、この添字を使って中の値を区別します。

鬼滅の刃風にたとえると、訓練記録棚の引き出しには、0番、1番、2番、3番…と番号札が付いています。
最初が1番ではなく0番から始まるのが、Javaの配列の大きな特徴です。

添字とは何か

配列を理解するときに、とても大切なのが添字です。

添字は、配列の中のどの場所を使うのかを表す番号です。
配列の中の値は、ただ並んでいるだけではなく、この番号とセットで管理されています。

用語意味
添字配列の中の位置を表す番号
要素配列の中に入っている1つ1つの値

たとえば、位置 0 にある値、位置 1 にある値、位置 2 にある値というように、場所を指定して中身を見分けます。

最初のうちは、0から始まるところで少し混乱しやすいです。
でも、ここをしっかり理解しておくと、配列の操作がかなりわかりやすくなります。

図:配列は添字で場所を管理する

↓クリックすると拡大表示されます。

この図が示していること

この図では、1つの配列の中に複数の値が並んでいて、それぞれが添字によって区別されていることを表しています。

上にある 0、1、2、3、4 は添字です。
箱の中にある 80、60、22、90、35 は要素です。
このように、配列は値を並べるだけでなく、どの場所にある値なのかを番号で管理しています。

ここからわかるのは、配列を使うときは「配列名」と「添字」をセットで考えることが大切だということです。
また、Javaでは最初の添字が 0 であることも、しっかり意識しておきたいポイントです。

配列が便利な理由

配列の便利さは、単に値をまとめて保存できることだけではありません。
まとめて持てるからこそ、繰り返し処理ととても相性がよくなります。

たとえば、配列があれば次のような処理をすっきり書けるようになります。

できること説明
全員分を順番に表示する配列の先頭から最後までたどればよい
合計を求める順番に足していける
平均を求める合計と件数を組み合わせればよい
最大値や最小値を探す1つずつ比較できる
条件に合う値を探す繰り返しながら調べられる

配列を使うメリットを整理すると、次のようになります。

メリット内容
同じ型の値をまとめられる点数、売上、気温などをひとまとまりで管理できる
名前を大量に作らなくてよい1つずつ別の変数名を付けなくてよい
繰り返し処理と組み合わせやすいfor文で順番に処理しやすい
コードが読みやすくなるデータのまとまりがはっきりする
保守しやすいデータ数が増減しても整理しやすい

鬼滅の刃風にたとえると、配列は「隊士の訓練記録を一つの帳面にまとめる」ようなものです。
1人ずつ別の紙に書くよりも、順番に見たり、合計したり、最高点を探したりするのがずっと楽になります。

変数と配列の違い

変数と配列は、どちらも値を記憶する仕組みですが、向いている場面が違います。

項目変数配列
保存できる値の数1つ複数
向いている場面単独の値を扱うとき同じ型の値をまとめて扱うとき
取り出し方変数名だけで取り出す配列名と添字で取り出す
年齢、合計点、身長点数一覧、月ごとの売上、気温記録

1人分の点数だけなら、変数で十分です。
でも、30人分、50人分、100人分の点数を扱うなら、配列のほうが自然です。

この使い分けが見えてくると、Javaのコードを整理しやすくなります。

配列はどんな場面で使われるのか

配列は、同じ種類のデータが複数ある場面でよく使われます。
実際のプログラムでも、かなり多くの場所で登場します。

配列に入れるもの
テストの点数管理生徒ごとの点数
売上データ月ごとの売上金額
気温の記録日ごとの気温
ゲームプレイヤーごとの得点
アンケート集計回答結果の数値
在庫管理商品ごとの在庫数

鬼滅の刃風にたとえると、配列は「隊士ごとの成績表」「曜日ごとの見回り記録」「任務ごとの達成点」などを並べて管理するのに向いています。

同じ種類の情報がずらっと並ぶ場面では、配列がとても自然に使えます。

配列は同じ型だけをまとめる

配列でとても大切なのは、同じ型の値だけをまとめるという点です。

整数を入れる配列なら、整数だけを入れます。
文字列を入れる配列なら、文字列だけを入れます。

配列の種類入れられるもの
int型の配列整数だけ
double型の配列小数を含む数値だけ
String型の配列文字列だけ

つまり、1つの配列の中に、整数と文字列と住所のような異なる種類の情報を自由に混ぜることはしません。

ここは、配列の得意分野とそうでない分野を分ける大切なポイントです。

異なる種類の情報をまとめたいときはクラスが向いている

たとえば、1人分の情報として、名前、年齢、身長、住所のような異なる性質のデータをまとめたいことがあります。

これは「同じ型の値を並べる」配列の仕事というより、「1人分の情報を1つにまとめる」考え方のほうが向いています。
こうした場面では、あとで学ぶクラスが活躍します。

使い分けを整理すると、次のようになります。

扱いたいもの向いている仕組み
1つの値変数
同じ種類の値が複数配列
異なる性質の情報を1つにまとめるクラス

鬼滅の刃風にたとえると、
1人の隊士の点数だけなら変数、
隊士全員の点数なら配列、
1人の隊士の名前・年齢・階級・担当任務をまとめるなら 隊士情報クラス が向いています。

ここでは、配列は「同じ型の値を横に並べて扱うのが得意」と覚えておくと、とても整理しやすいです。

まずは配列を使う目的をしっかり押さえよう

配列の学習では、いきなり構文だけ覚えようとするよりも、なぜ使うのかを先に理解することが大切です。

配列の目的は、同じ種類のデータをまとめて管理し、効率よく処理できるようにすることです。

この考え方を整理すると、次のようになります。

扱いたい内容向いている考え方
1人の点数変数
30人分の点数配列
1人分の名前・年齢・住所クラス

この使い分けが見えるようになると、Javaのコードはかなり整理しやすくなります。

鬼滅の刃風にたとえると、
1本の刀なら1つの刀袋、
多数の同じ訓練記録なら配列の記録棚、
1人の隊士の細かな情報一式なら隊士情報帳、と考えるとイメージしやすいです。

図:変数・配列・クラスの使い分け

↓クリックすると拡大表示されます。

この図が示していること

この図では、何をまとめたいかによって、変数・配列・クラスを使い分ける考え方を表しています。

左は1つの値を扱う変数です。
中央は同じ型の値を複数まとめる配列です。
右は異なる性質の情報を1つにまとめるクラスです。

ここからわかるのは、配列は万能な入れ物ではなく、「同じ種類のデータを並べて扱う」ことに特に強い仕組みだということです。
また、配列の役割を変数やクラスと比べて考えると、使いどころがぐっと明確になります。

配列は繰り返し処理と相性がよい

配列がJavaでとても重要なのは、繰り返し処理と組み合わせやすいからです。

配列の中には、同じ型の値が順番に並んでいます。
だから、先頭から順番に見ていく処理がとても自然です。

たとえば、今後は次のような処理ができるようになります。

できること配列との関係
すべての値を順番に表示する先頭から順に取り出していく
合計や平均を計算する値を1つずつ足していく
最大値や最小値を探す順番に比較していく
条件に合う値を探す1つずつ調べていく
件数を数える条件に合う要素を数えていく

これは、前に学んだ for文 などの繰り返し処理ととても相性がよい考え方です。
配列と繰り返し処理が組み合わさると、Javaのプログラムは一気に実践的になります。

鬼滅の刃風にたとえると、配列は「隊士の記録が番号順に並んだ帳面」、繰り返し処理は「その帳面を先頭から順にめくって確認する動き」です。
この組み合わせによって、全員分を一気に調べられるようになります。

配列を学ぶとこの先のJavaが理解しやすくなる

配列は、Javaの基本文法の中でもかなり重要な内容です。

なぜなら、配列を理解すると、次のようなことが自然に見えてくるからです。

この先につながる内容配列とのつながり
データの集まりの扱い方同じ種類の情報をまとめて管理できる
繰り返し処理の実践順番に処理する流れが見えてくる
集計処理合計や平均を求めやすくなる
探索処理最大値や条件一致を見つけやすくなる
実用的なプログラム多数のデータを整理して扱えるようになる

Javaでは、1つの値だけを扱うよりも、たくさんのデータをまとめて扱う場面がとても多いです。
その土台になるのが配列です。

配列の学習で最初に押さえたいポイント

配列の学習を始めるときは、次のポイントをまず押さえておくと安心です。

ポイント内容
配列は同じ型の値をまとめる異なる型を自由に混ぜない
配列には添字がある位置番号で要素を区別する
添字は0から始まる最初が1ではないので注意する
変数とは役割が違う1つなら変数、複数なら配列
繰り返し処理と相性がよい順番に処理しやすい

この土台ができていると、この先で学ぶ配列の宣言、要素の確保、初期化、添字の使い方、配列の長さといった内容も、ずっと理解しやすくなります。

鬼滅の刃風にたとえると、配列は「同じ種類の札を順番に並べて保管する棚」です。
どの棚にどの札があるのかを、添字という番号で見分けます。
そして、その棚を順番に確認していくことで、多くの記録を効率よく扱えるようになります。

配列の基本イメージをしっかり持っておこう

配列は、「たくさんの同じ種類のデータをまとめて扱うための基本機能」です。

変数を1つずつ増やしていくやり方に比べて、コードが整理しやすく、読みやすく、処理もしやすくなります。
特に、点数や売上や気温のように、同じ種類のデータがたくさん並ぶ場面では、配列はとても自然で強力な仕組みです。

まずは、配列とは「同じ型の値をまとめて記憶する仕組み」であり、「添字で場所を管理する入れ物」だというイメージをしっかり持つことが大切です。
このイメージができると、この先に続く配列の具体的な使い方も、かなりつかみやすくなります。