🙆
[Javaの基礎]配列について
はじめに
ここではJavaの配列ついてまとめています。
配列とは
配列は同じ型の複数の値を一つにまとめて扱うためのデータ構造です。配列は固定長であり、一度作成するとサイズを変更できません。配列自体はオブジェクトであり、ヒープ領域に格納されます。
宣言方法と初期化
宣言の方法は2つあります。
以下のようにC言語のようにも宣言できますが推奨されていません。
int[] numbers; // 推奨される書き方
int numbers[]; // C言語スタイル、許容される
配列はnew
を使って初期化します。
numbers = new int[5]; // 要素数5のint配列(初期値は0)
宣言と同時に初期化する場合には以下のようにします。
int[] numbers = {10, 20, 30, 40, 50};
配列の使用例
配列の要素にアクセスするためには、index番号を使用します。
以下のように添え字を使用する場合以外は拡張for文を使用することが基本です。
public class ArrayExample {
public static void main(String[] args) {
int[] scores = {90, 80, 70, 85, 95};
// 要素のアクセスと出力
for (int i = 0; i < scores.length; i++) {
System.out.println("scores[" + i + "] = " + scores[i]);
}
// 拡張for文(for-each)でも可能
for (int score : scores) {
System.out.println("score = " + score);
}
}
}
出力結果
scores[0] = 90
scores[1] = 80
scores[2] = 70
scores[3] = 85
scores[4] = 95
score = 90
score = 80
score = 70
score = 85
score = 95
以下のように多次元配列を使用することも可能です。
int[][] matrix = {
{1, 2, 3},
{4, 5, 6}
};
System.out.println(matrix[1][2]); // 出力: 6
java.util.Arraysの主なメソッド
Arrays.toString()
配列の内容を文字列として表示できます。
int[] arr = {3, 1, 4};
System.out.println(Arrays.toString(arr)); // [3, 1, 4]
Arrays.sort()
配列のソート(昇順)ができます。
int[] arr = {3, 1, 4};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // [1, 3, 4]
Arrays.equals()
配列同士の内容が等しいか比較できます。
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(Arrays.equals(a, b)); // true
Arrays.copyOf()
とArrays.copyOfRange()
配列をコピー(サイズ変更可)と一部をコピーできます。
int[] original = {10, 20, 30};
int[] copy1 = Arrays.copyOf(original, 5); // [10, 20, 30, 0, 0]
int[] copy2 = Arrays.copyOfRange(original, 1, 3); // [20, 30]
Arrays.fill()
配列の全要素に指定値を代入できます。
int[] arr = new int[5];
Arrays.fill(arr, 7); // [7, 7, 7, 7, 7]
Arrays.binarySearch()
ソート済みの配列に対して二分探索できます。
int[] arr = {10, 20, 30, 40};
int index = Arrays.binarySearch(arr, 30); // 2(見つかった30のインデックス)
Arrays.asList()
配列をList
に変換できます。ただし固定サイズ(要素の追加・削除は不可)です。
String[] strs = {"A", "B", "C"};
List<String> list = Arrays.asList(strs);
// list.add("D"); ← UnsupportedOperationException(サイズ固定)
Arrays.deepToString()
以下のようにArrays.toString(matrix)
は各行がint型の配列オブジェクト(メモリのアドレスのような形式)として表示されます。
一方でArrays.deepToString(matrix)
を使用することで中の配列も再帰的に文字列化してくれます。
public class DeepToStringExample {
public static void main(String[] args) {
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 通常の toString()
System.out.println("toString(): " + Arrays.toString(matrix));
// deepToString() の使用
System.out.println("deepToString(): " + Arrays.deepToString(matrix));
}
}
出力
toString(): [[I@15db9742, [I@6d06d69c, [I@7852e922]
deepToString(): [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Discussion