Javaの配列とは?Arrayの使い方とサンプルを紹介
今回はJavaの配列の宣言方法や、配列に格納されている要素の取得や追加、ソートなどについて、くわしく解説していきます。
今回はJavaの配列の宣言方法や、配列に格納されている要素の取得や追加、ソートなどについて、くわしく解説していきます。
スキルアップ
2022/03/07 UP
- プログラミング
- SE資格・スキル
- Java
ArrayはJavaで扱う配列の基本型です。配列とは、同じ型のデータ集合体を扱うための入れ物で、複数の値をまとめて扱う時に便利です。
今回はJavaの配列の宣言方法や、配列に格納されている要素の取得や追加、ソートなどについて、くわしく解説していきます。
Javaの配列とは?知っておきたい基礎知識
配列は変数の一種です。同じ型の複数の値をひとつの変数として扱うことで、多くの値をまとめて扱うことができます。また、配列から特定の値を取り出したり、順番を入れ替えることもできます。
たとえば5個の商品の値段を保持するためには、int型の変数を5個宣言し、それぞれに商品の値段を指定して格納する必要があります。しかし、配列を利用することで、すべての変数を宣言する必要がなくなります。
配列は、以下のような型の宣言で作成します。宣言と同時に値を代入して、配列を初期化することも可能です。
宣言には、
型名 配列名[] = new 型名[要素数];
もしくは
型名[] 配列名 = { 初期化子 };
の2パターンあります。
では、実際に配列を作ってみましょう。2つのサンプルコードで作られる配列は、同じ内容になります。
サンプルコード1:
int nedan[] = new int[10];
nedan[0] = 50;
nedan[1] = 20;
nedan[2] = 15;
nedan[3] = 60;
nedan[4] = 90;
サンプルコード2:
int[] nedan = {50, 20, 15, 60, 90};
配列(Array)の使い方
それでは、配列(Array)の宣言方法や要素の取得、追加、変換など、配列の基本的な操作方法を、実際に動くサンプルコードを元に確認していきましょう。実務でもよく使う処理なので、どのように動作しているのかひとつずつ確認しながら進めてください。
配列の宣言と初期化
前項で解説したように、配列には2パターンの宣言方法があります。状況に応じて使い分けましょう。なお、配列の変数名は、プログラミング言語の予約語以外は自由に付けることができます。
実際に配列を作り、実行してみましょう。
サンプルコード:
public class sample {
public static void main(String[] args) {
int[] array01 = new int[5];
array01[0] = 1;
array01[1] = 2;
array01[2] = 3;
array01[3] = 4;
array01[4] = 5;
int [] array02 = {1,2,3,4,5};
}
}
array01とarray02は同じ内容を持つ配列になります。そのため、array01[3]とarray02[3]も同じ数字が出力されます。
配列の要素を取得する
配列を利用して処理を行う際に、事前に配列の要素の数や、全要素を取得しておきたい場合には、配列名の後ろに「length」を付与します。
要素を取得する理由は、例外の発生を抑制し、プログラミングを簡便化することにあります。
プログラムの中で複数の配列を処理する際に、要素数をすべて記録しておくことは現実的には難しく、誤った要素数を指定すると例外が発生してしまうケースもあります。
そこで、配列の要素を取得し、それを元に処理を行います。
実際のサンプルコードを見てみましょう。このサンプルでは、要素の数を取得して表示したあと、for文を用いてすべての要素を列挙しています。
サンプルコード:
public class sample {
public static void main(String[] args) {
int[] array01 = new int[5];
array01[0] = 1;
array01[1] = 2;
array01[2] = 3;
array01[3] = 4;
array01[4] = 5;
System.out.println("要素の数は" + array01.length + "\n");
for(int i=0; i<array01.length; i++) {
System.out.println(array01[i]);
}
}
}
このサンプルを実行すると以下のように表示されます。
まず要素を取得して文字列を出力し、続いて1〜5の要素が列挙されました。実務でも要素の取得は頻繁に使用するので、「length」の使い方を覚えておくと便利でしょう。
配列の要素を追加する
Javaの配列は、最初に要素数を決めるため、既存の配列に値を追加できません。そこで、値を追加するための配列を別に用意しておき、元の配列の値をコピーして、1つの配列にするという方法で追加します。
配列のコピーには、java.lang.Systemクラスの「arraycopy」メソッドを使います。
実際のサンプルコードを見てみましょう。このサンプルでは、1〜5の5つの要素を持つarray01に、6〜10の新しい5つの要素を足したい場合の処理を行っています。まず要素数が10あるarray02を作り、そこにarray01をコピーしてから、新しい要素を追加しています。
サンプルコード:
public class sample {
public static void main(String[] args) throws Exception {
int[] array01 = new int[5];
array01[0] = 1;
array01[1] = 2;
array01[2] = 3;
array01[3] = 4;
array01[4] = 5;
int[] array02 = new int[10];
// array01をarray02に複製する
System.arraycopy(array01, 0, array02, 0, 5);
array02[5] = 6;
array02[6] = 7;
array02[7] = 8;
array02[8] = 9;
array02[9] = 10;
// 配列の全要素出力
for (int array02data: array02){
System.out.println(array02data);
}
}
}
このコードを実行すると、以下のようになります。元の配列から要素をコピーし、新しい要素が追加されて、1〜10の10個の要素を持った配列array02の要素が表示されました。
配列をListへ変換する
配列からリストを作成する場合には、Arraysクラスの「asList」メソッドを使います。asListは、指定された配列に基づいて、固定サイズのリストを作ります。
asListは「Arrays.asList(配列);」のように記述し、リストに変換したい配列を指定します。配列とリストは値に対する扱いが異なるため、配列の要素をリストとして使用したいケースで役立ちます。
サンプルコードを見てみましょう。このサンプルではarray01という配列を、Arrays.asListを使用して新しくlist01というリストに変換しています。
public class sample {
public static void main(String[] args) {
String[] array01 = {"01", "02", "03", "04", "05"};
List<String> list01 = Arrays.asList(array01);
}
}
要素の存在を確認する
前項で解説したasListの応用になります。Javaの配列に対して、特定の要素が含まれているか否かを確認するには、一度asListによって配列をリストに変換してからcontainメソッドを使用して、要素の有無を確認します。
実際のサンプルコードを見てみましょう。このコードでは指定した配列を一度asListでリスト化し、containsメソッドで指定した値があるか参照しています。
public class sample {
public static void main(String[] args) {
String array01[] = {"01", "02", "03", "04", "05"};
if(Arrays.asList(array01).contains("03")) {
System.out.println("03がありました");
} else {
System.out.println("見つかりません");
}
}
}
このサンプルを実行すると以下のように表示されます。03は配列の中に存在しているので、「03がありました」と出力されました。
配列をソートする
配列要素の並び替え(ソート)をするには、java.util.Arraysの「sort」メソッドを使用します。
実際のサンプルコードを見てみましょう。このサンプルでは、バラバラに並んでいるarray01の要素を、sortメソッドを使うことで小さい値から順番に並び替えています。
public class sample {
public static void main(String[] args) {
String[] array01 = {"02", "04", "05", "01", "03"};
// 配列の要素でソート
Arrays.sort(array01);
// 配列の全要素出力
for (String data: array01){
System.out.println(data);
}
}
}
このサンプルを実行すると以下のように表示されます。
ランダムに並んでいた値が、01から05に並び替えられ、順番に出力されました。このようにArrays.sortでは、int型だけでなく、string型も並び替えが可能です。string型の場合はアルファベット順に変更されます。
降順に並び替えをしたい場合は、「sort」メソッドの第2引数にjava.util.Collectionsクラスの「reverseOrder」メソッドを指定し、「Arrays.sort(配列名, Collections.reverseOrder());」のように記述します。
先ほどのサンプルコードを降順に変更してみましょう。
サンプルコード:
import java.util.Arrays;
import java.util.Collections;
public class sample {
public static void main(String[] args) {
String[] array01 = {"02", "04", "05", "01", "03"};
// 配列の要素でソート
Arrays.sort(array01, Collections.reverseOrder());
// 配列の全要素出力
for (String data: array01){
System.out.println(data);
}
}
}
このサンプルを実行すると以下のように表示されます。先ほどと異なり、降順で数字が表示されました。
配列は頻繁に使用するので使い方を覚えておこう
配列はJavaでプログラミングをする上で基本となる知識なので、配列を操作する基本的なことは早めに身につけておきましょう。プログラミングの実務で配列は頻繁に使用することになります。
また、今回紹介していない配列の一種に、多次元配列という配列があります。配列の扱い方に慣れたら、多次元配列も学習してみてはいかがでしょうか。