【Java入門】配列、連想配列を使ってみよう!

投稿日: 作成:   更新:

Javaで配列の使い方(定義、値の取得)と、
配列の種類「1次元配列、2次元配列、連想配列」がどのようなものかあるのかを解説します。

Javaに限らずですが「配列を制するものはプログラミングを制する」と言われているほど、配列は重要なプログラミングの要素ですので、

まずは「配列とは何者か?」という感覚をつかんでもらえればOKです。

※Javaには「基本型(String[]など)、ArrayList」の配列が2種類ありますが、「ArrayList」の方で説明します。

それでは行きましょう!

配列とは

配列は複数の値を1つの変数に入れて使用します。

変数について「変数の宣言と使い方」でString型、Integer型の説明しました。
String型、Integer型は1つの変数に1つの値を入れていましたが、配列は複数の値を入れることができます。

配列のイメージは次のようになります。

インデックス番号「0, 1, 2」が振られており、このなかにフルーツ名が入っていて、インデックス番号は 0 を指定したら「バナナ」が取り出せるキーとなっています。

次の「配列の使い方」で、このイメージの配列をソースコードで記述してみます。

配列の使い方

配列を定義してみる

Javaの配列をArrayListクラスを使って定義します。

package sample;

// [1] ArrayListクラスをインポートする(ショートカットキー「shift + ctrl + o」)
import java.util.ArrayList;

public class Sample {
    public static void main(String[] args) {

        // [2] 配列を定義する
        ArrayList<String> list = new ArrayList<String>();

        // [3] 配列に文字を追加する
        list.add("バナナ");
        list.add("イチゴ");
        list.add("すいか");
    }
}

[1]
ArrayListクラスを最初にimportします。
WindowのEclipse環境であれば、[2] を定義した後でショートカットキー「shift + ctrl + o」で自動的にimport定義することができます。

[2]
配列を定義します。
ArrayList配列に格納する型を<>の中に定義します。今回は文字列の配列なので<String>を定義しています。

[3]
addメソッドを使って文字列を配列に追加していきます。

配列の値を取得してみる

変数に定義した配列から値を取得してみましょう。

配列の取得方法はインデックス番号を指定して取得します。

「インデックスを指定して表示する方法」と「ループして表示する方法」の2つのソースコードを書いてみます。(mainメソッド内の部分だけ記載します)

ArrayList<String> list = new ArrayList<String>();
list.add("バナナ");
list.add("イチゴ");
list.add("すいか");

System.out.println("◆インデックスを指定して表示");
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));

System.out.println("◆ループして表示");
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

実行結果:

上記のように配列から値を取得できましたか?
この感覚をつかんでおきましょう。

配列の種類

Javaの配列の種類について紹介します。
今回は「1次元配列、2次元配列、連想配列」の3種類について説明します。

1次元配列

これは先ほど「配列の使い方」で説明しましたが、おさらいで「都道府県」を例にソースコードを記述してみます。

ArrayList<String> list = new ArrayList<String>();
list.add("東京都");
list.add("千葉県");
list.add("青森県");
list.add("秋田県");

System.out.println("◆インデックスを指定して表示");
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
System.out.println(list.get(3));

System.out.println("◆ループして表示");
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

実行結果:

都道府県を表示できました。
配列のイメージは次のような感じです。

2次元配列

2次元配列は、配列の中に配列が入っている状態です。
言葉だと何だか分からないと思いますので、ソースコードを見てみましょう。

ArrayList<String> kantouList = new ArrayList<String>();
kantouList.add("東京都");
kantouList.add("千葉県");

ArrayList<String> tohokuList = new ArrayList<String>();
tohokuList.add("青森県");
tohokuList.add("秋田県");

ArrayList< ArrayList<String> > list = new ArrayList<ArrayList <String>>();
list.add(kantouList);
list.add(tohokuList);

System.out.println("◆インデックスを指定して表示");
System.out.println(list.get(0).get(0));
System.out.println(list.get(0).get(1));
System.out.println(list.get(1).get(0));
System.out.println(list.get(1).get(1));

System.out.println("◆ループして表示");
for (int i = 0; i < list.size(); i++) {
    for (int j = 0; j < list.get(i).size(); j++) {
        System.out.println(list.get(i).get(j));
    }
}

実行結果:

1次元配列と出力結果は同じですが、値の取得には2回ループする必要があります。

2次元配列をイメージで表すと次のようになります。

このように、2次元配列は「行、列」を表すことができます。
この例はインデックス番号なので分かりづらいのですが、「行0 = 関東、行1 = 東北」を表しています。

2次元配列の入れ子と同じ要領で「3次元、4次元」のように入れ子を深くすることもできますが、入れ子が深くなるとループが複雑になるので頭が混乱しますので、できるだけ入れ子は浅くして使いたいものです。

もし、入れ子が複雑になり混乱したときはExcelなどを使って一回表のイメージにして考えると良いです。

連想配列

連想配列はインデックス番号の代わりにキー名称がついた配列です。
Javaでは「HashMapクラス」を使用して連想配列を定義します。

他の配列とは違って、連想配列はインデックス番号がないので、ループするには「for(String value : map.values())」を使用します。

では、ソースコードを見てみましょう。

HashMap<String, String> map = new HashMap<String, String>();
map.put("tokyo", "東京都");
map.put("chiba", "千葉県");
map.put("aomori", "青森県");
map.put("akita", "秋田県");

System.out.println("◆キーを指定して表示");
System.out.println(map.get("tokyo"));
System.out.println(map.get("chiba"));
System.out.println(map.get("aomori"));
System.out.println(map.get("akita"));

System.out.println("◆ループして表示");
for (String value : map.values()) {
    System.out.println(value);
}

実行結果:

1次元配列、2次元配列とは違ってインデックス番号を使わないので、ソースコードが見やすいですね。

連想配列をイメージで表すと次のようになります。

連想配列はその名のとおり「連想する配列」ですので、キー名が tokyo なら「東京都」が取得できるように、わかりやすいキー名称をつけて連想させましょう。

まとめ

Javaの配列について次の内容で解説しました。

  • 配列とは
  • 配列の定義、取得する方法
  • 配列の種類「1次元配列、2次元配列、連想配列」の使い方とイメージ

システムを作る上で配列は必ずと言っていいほど使用しますので、配列のイメージだけでも覚えておきましょう。