Javaでの配列の使い方を基本から応用まで。連想配列についても解説

この記事の要点

  • 配列とは、同じ型のデータをいくつもまとめて管理するための仕組み
  • あらかじめ配列に格納する要素が決まっている場合は、初期化子{}を使う
  • 配列では、先頭要素を0番目として数える

Javaの配列は、他のデータ型とは少し異なる構文が存在します。
配列の大きさを求めるにはlengthを使う、初期化には{}を使うなど、配列を使いこなすために必要な知識があるため、整理して覚えることが重要です。
当記事を読めば、配列の基本的な使い方から、やや応用的な内容までまとめて理解できます。
また、二次元配列、連想配列(Map)など、配列の種類についても解説しています。

Javaでの「配列」とは

配列とは、同じ型のデータをいくつもまとめて管理するための仕組みです。
例えば、int型のデータを3つ格納できる配列を作りたい場合、以下のようになります。

int[] array = new int[3];

配列の種類

配列には以下のような種類があります。

二次元配列

二次元配列は、配列の中に配列を格納しているイメージです。
例えば電車の座席は、「1両目の前から3番目の席」のように表現できます。
このようなデータを取り扱うために使います。
要素数が10の配列を3つ格納できる配列を作る場合、以下のようになります。

int[][] array = new int[3][10];

要素の代入、参照は以下のようになります。

array[0][3] = 10; // 0番目の配列の、3番目に10を格納する
int num = array[0][3]; // 0番目の配列の、3番目の要素を取得する

連想配列

連想配列とは、添字に数字以外の型も使える配列です。
JavaではMap(マップ)と呼ばれます。
配列とは使い方が異なるため、整理して理解しましょう。

Map<String, Integer> map = new HashMap<>(); // 添字に文字列を使うMapを作成
map.put("apple", 100); // "apple"と100を関連づける
int num = map.get("apple"); // "apple"に関連づいた値(100)を取得

配列の基本的な使い方

配列の基本的な使い方をご紹介します。

配列型変数の宣言

配列型変数の宣言は、以下の2通りあります。
どちらを使っても問題ありません。

型名[] 変数名;

または

型名 変数名[];

配列の初期化

配列の初期化は、先ほどご紹介したnewを使う方法と、初期化子{}を使う方法があります。
あらかじめ配列に格納する要素が決まっている場合は、初期化子を使うとより簡潔に書けます

// newを使う場合
int[] array1 = new int[3];
array1[0] = 0;
array1[1] = 10;
array1[2] = 20;
// 初期化子を使う場合
int[] array2 = {0, 10, 20};

要素の代入

配列に要素を代入するには、添字を使います。
添字とは、その要素が先頭から数えて何番目かを表す数字です。
先頭を0として数える点に注意してください
具体的には、以下のようになります。

array[0] = 10; // 配列の0番目に10を代入する

要素の参照

配列から要素を取得する場合も添字を使います。
具体的には、以下のようになります。

int num = array[0] // 配列の0番目の要素を参照する

配列の大きさを取得

変数名.lengthの構文で、配列の大きさを取得できます。

int[] array = new int[3];
System.out.println(array.length); // 「3」が出力される

配列の応用的な使い方

基本的な使い方をマスターしたら、応用的な使い方にチャレンジしてみましょう。

for文で配列の大きさ分ループする

「配列の中から順番に全ての値を参照し、参照した値が特定の値の時のみ処理をする」といった操作はよく使われます。
for文と、配列の大きさを求めるlengthを併せて使うのがポイントです。
次のプログラムは、配列の中から偶数の値だけ画面に出力するプログラムです。

int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for(int i = 0; i < array.length; i++){
    int num = array[i];
    if(num % 2 == 0){
        System.out.println(num);
    }
}

要素のソート

Javaの標準ライブラリであるArraysクラスのsortメソッドを使うと、配列の要素を並び替えることができます。

int[] array = {5, 2, 7, 3, 1, 9};
Arrays.sort(array); // {1, 2, 3, 5, 7, 9}に並び替えられる

配列からリストを作成

配列はメモリ消費量は少ないというメリットはありますが、決まった数しか要素を追加できない、要素の削除などの複雑な操作に向いていない、といったデメリットがあります。
そのような場合、ArraysクラスのasListメソッドを使ってリストを生成すると便利に扱えます
ここでは、配列からリストを生成する方法をご紹介します。

String[] array = {"a", "b", "c"}; // 3つしか要素を格納できない配列
List<String> list = new ArrayList<>(Arrays.asList(array)); // asListメソッドを使って、配列をリストに変換
list.add("d"); // 4つ目の要素を追加できる
list.remove(0); // 要素の削除も簡単

まとめ

Javaの配列は、他のデータ型と少し異なる構文を用いるため、しっかり理解する必要があります。
特にfor文と組み合わせて使う方法はよく使いますが、慣れが必要です。
何度も使っていくうちに自然に身についていくので、理解できなかったところは繰り返し練習してみてください。