プログラミング

【Java初心者必見】この記事だけで大丈夫!配列の全てを知ろう!(一次元配列から多次元配列まで)

プログラミング
この記事は約6分で読めます。
Sponsored Links

配列って何?

アルファベット, イラスト, グラフィック

配列とは「複数の値の集合を1つにまとめてあつかうもの」をいいます。もっと簡単な例で説明しましょう。ここにガンダムと名前のつけられたおもちゃ箱があるとします。普通は一つの箱の中に1つのおもちゃしか入れることができないのですが、配列になると複数のおもちゃを入れることができます。これが配列です。配列は、配列クラスをインスタンス化して作成する物であり、参照型の1つです。

配列の種類

インテリア, インテリア・デザイン, インドア

一口に配列と言っても種類があります。配列の場合はおもちゃ箱の中が区切ってあって、そこにおもちゃを入れるようになっています。

一次元配列

配列といったら一次元配列を思い浮かべる人が多いかもしれません。もっとも利用頻度の高い配列で、イメージは以下のようになります。

変数の中にさらに番号のつけられた箱があり、そこに値が格納されるというイメージを持つようにしておきましょう。

二次元配列

二次元配列は一次配列に奥行き、または高さが出たものです。マンションなどをイメージするといいでしょう。7階の2号室に住んでいるのは田中さんといったように2つの要素にて該当するものを決定する際に有効です。

イメージは下のようになります。

多次元配列

一次元配列、二次元配列の他に多次元配列というものも存在します。具体的には三次元配列、四次元配列などのことを指します。ここら辺からはより複雑になってくるのでイメージよりも、実際に書いて覚えるというふうにした方が良いでしょう。

配列の宣言と初期化

アイウェア, インドア, ガラスアイテム

配列の宣言・初期化には3つの方法があります。記述量が多い順で記載しています。③番目が使う頻度が多いですが、スコープの関係などで他の方法も使うことがあるので、様々な宣言方法があるということは頭に入れておいてくださいね!また、配列は宣言時に要素数を決める必要があり、あとで要素数を変えることはできません。また、インスタンス生成時に要素数を入れないとコンパイルエラーになってしまうので注意しましょう。

方法①

//配列の宣言
String[] score;

//要素数の決定
score = new score[要素数];

//初期化
score[インデックス] = リテラル;

方法②

//宣言・要素数の決定
String[] = new score[要素数];

//初期化
score[インデックス] = リテラル;

方法③

//宣言・要素数の決定・初期化①
String[] name = new String[]{"a","b","c"}

上記のコードを使用する際は、[]の中に要素数を入れないことに注意しましょう。要素数を入れてしまった場合はコンパイルエラーとなります。

方法④

//宣言・要素数の決定・初期化②
String[] name = {"a","b","c"}

new 演算子を省略することも可能です。この定義方法が最も多く利用されるので、しっかりと覚えておくようにしましょう。

補足(多次元配列の宣言)

多次元配列の場合も、一次元配列の時のように宣言・初期化することができます。ですが、少しだけ記述方法が違うのでその方法を学習していきましょう。今回は一次配列の宣言の②番を例にとって説明していきます。

//二次元配列の宣言・要素数の決定
int[][] array = new int[][];

//初期化
array = {{2,3},{4,5}}

このように配列の宣言はデータ型の横に置く、鉤括弧の数でコントロールすることができます。高次元になるほど初期化の{}の部分が複雑になるので、間違わないように落ち着いて書くようにしましょう。また、多次元配列を宣言する際は1次元目の要素数は省略することはできません。1次元目を省略してしまうとコンパイルエラーになるので注意しましょう。

要素の取り出し・上書き

アパート, インドア, カートン

添字(インデックス)

配列にはインデックスと呼ばれるものが存在します。これはつまり、番号という意味で、配列の中に定義されているものにはそれぞれに自動的に番号が振り分けられるようになっています。

インデックスを使用することで要素の追加や取り出しを行うとができます。まずはインデックスに関して学習していきましょう。

String[] name = {"a","b","c"}

上のようなコードがあった際に、aは0番目、bは1番目、cは2番目と表すことができます。注意すべき点は1から始まるのではなく0から始まるという点です。

慣れるまでに時間がかかると思いますが、しっかりと覚えていきましょう。

要素の取り出し

次に配列の中から要素を取り出して新しく定義する方法に関して学習していきます。

//配列の定義
String[] name = {"a","b","c"}

//要素の取り出し
String index = neme[1];

このように記述すると、indexにはbが代入されます。こうすることで要素の取り出しを行います。

要素の上書き

次に要素を上書きする方法を学習していきましょう。

//配列の定義
String[] name = {"a","b","c"}

//要素の上書き
index[1] = "z";

このように記述することでbをzに変更することができます。

配列の応用を知る

アパート, インドア, カートン

特殊な宣言

一次元配列や多次元配列にて下記のような宣言方法を行うこともできます。

//変数の後ろに[]の記述も可能(一次元配列の宣言)
String name[];

//[]をバラして定義も可能(二次元配列の宣言)
String[] name[];

非対称な多次元配列

多次元配列は非対称に書くことも可能です。非対称に多次元配列を書いた場合は以下のようになります。

String[][] name = {{"山田", "田中"},
                   {"鈴木", "平田", "古田", "川上"},
                   {"佐藤"}};

二次元配列の場合を記述しました。要素がないところから取得しようとすると実行時エラーとなってしまうので注意しましょう。

java.util.Arraysクラスを使う

配列をコピーしたい。要素の順番を入れ替えたいなど配列に対して操作を行いたい場合はjava.util.Arraysクラスの利用を真っ先に検討するのがおすすめです。

プログラミング初心者の人たちは「この操作がしたいけど方法がわからない」という事態に陥りがちです。なので、配列に対して何か操作をしたいと思ったら、まずjava.util.Arraysクラスを疑ってグーグル検索をするようにしましょう。

java.util.Arraysクラスには以下のようなメソッドが用意されています。

.clone 全部複製する
.arraycopy 特定の箇所だけコピーする
.sort 昇順に変更

などです、他にもたくさんのメソッドが用意されているので調べて軽く目を通してみてくださいね!

最後に

いかがだったでしょうか?この記事の内容を押さえておけば配列に関してはマスターになれるので、しっかりと目を通しておいてくださいね!

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