Java配列
配列は、すべてのプログラミング言語にとって重要なデータ構造の 1 つです。もちろん、言語が異なれば配列の実装方法や処理方法も異なります。
Java 言語で提供される配列は、同じ型の固定サイズの要素を格納するために使用されます。
100 個の独立変数 (number0、number1、...、number99) を直接宣言する代わりに、numbers[100] などの配列変数を宣言できます。
このチュートリアルでは、Java 配列の宣言、作成、初期化について紹介し、対応するコードを示します。
配列変数を宣言する
まず、プログラムで配列を使用する前に、配列変数を宣言する必要があります。以下は、配列変数を宣言するための構文です:
dataType[] arrayRefVar; // 首选的方法 或 dataType arrayRefVar[]; // 效果相同,但不是首选方法
注: 配列変数を宣言するには、dataType[] arrayRefVar の宣言スタイルを使用することをお勧めします。 dataType arrayRefVar[] スタイルは C/C++ 言語に由来しており、C/C++ プログラマーが Java 言語をすぐに理解できるように Java で採用されています。
例
以下は、これら 2 つの構文のコード例です:
double[] myList; // 首选的方法 或 double myList[]; // 效果相同,但不是首选方法
配列の作成
Java 言語は new 演算子を使用して配列を作成し、構文は次のとおりです:
arrayRefVar = new dataType[arraySize];
上記の構文ステートメントは 2 つの処理を行います。 things:
1. dataType[arraySize] を使用して配列を作成します。
2. 新しく作成した配列の参照を変数 arrayRefVar に代入します。
以下に示すように、配列変数の宣言と配列の作成は 1 つのステートメントで完了できます。
dataType[] arrayRefVar = new dataType[arraySize];
また、次の方法で配列を作成することもできます。
dataType[] arrayRefVar = {value0, value1, ..., valuek};
配列の要素はインデックスによってアクセスされます。配列のインデックス付けは 0 から始まるため、インデックス値の範囲は 0 から arrayRefVar.length-1 までです。
例
次のステートメントは、まず配列変数 myList を宣言し、次に 10 個の double 型要素を含む配列を作成し、その参照を myList 変数に割り当てます。
public class TestArray { public static void main(String[] args) { // 数组大小 int size = 10; // 定义数组 double[] myList = new double[size]; myList[0] = 5.6; myList[1] = 4.5; myList[2] = 3.3; myList[3] = 13.2; myList[4] = 4.0; myList[5] = 34.33; myList[6] = 34.0; myList[7] = 45.45; myList[8] = 99.993; myList[9] = 11123; // 计算所有元素的总和 double total = 0; for (int i = 0; i < size; i++) { total += myList[i]; } System.out.println("总和为: " + total); } }
上記の例の出力結果は次のとおりです:
总和为: 11367.373
下の図は、配列 myList を示しています。ここで、myList 配列には 10 個の double 要素があり、それらの添え字の範囲は 0 から 9 です。
配列の処理
配列の要素の型と配列のサイズが決まっているため、配列の要素を処理する場合、通常は基本ループまたはforeachループを使用します。
例
この例は、配列の作成、初期化、操作方法を完全に示しています:
public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // 打印所有数组元素 for (int i = 0; i < myList.length; i++) { System.out.println(myList[i] + " "); } // 计算所有元素的总和 double total = 0; for (int i = 0; i < myList.length; i++) { total += myList[i]; } System.out.println("Total is " + total); // 查找最大元素 double max = myList[0]; for (int i = 1; i < myList.length; i++) { if (myList[i] > max) max = myList[i]; } System.out.println("Max is " + max); } }
上記の例は、次のようにコンパイルして結果を実行します:
1.9 2.9 3.4 3.5 Total is 11.7 Max is 3.5
foreachループ
JDK 1.5では、Itと呼ばれる新しいループタイプが導入されています。は、添え字を使用せずに配列を走査できる foreach ループまたは拡張ループです。
例
この例は、配列 myList 内のすべての要素を表示するために使用されます:
public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // 打印所有数组元素 for (double element: myList) { System.out.println(element); } } }
上記の例のコンパイルと実行結果は次のとおりです:
1.9 2.9 3.4 3.5
関数のパラメーターとして配列
配列はに渡すことができますメソッドをパラメータとして使用します。たとえば、次の例は int 配列の要素を出力するメソッドです。
public static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } }
次の例では、printArray メソッドを呼び出して 3、1、2、6、4、および 2 を出力します。
printArray(new int[]{3, 1, 2, 6, 4, 2});
関数の戻り値として配列を使用する
public static int[] reverse(int[] list) { int[] result = new int[list.length]; for (int i = 0, j = result.length - 1; i < list.length; i++, j--) { result[j] = list[i]; } return result; }
上記の例では、関数の戻り値として結果の配列を使用しています。
Arraysクラス
java.util.Arraysクラスは配列を便利に操作でき、提供するメソッドはすべて静的です。次の機能があります:
fill メソッドを通じて、配列に値を割り当てます。
配列を並べ替えます。sort メソッドを使用して昇順に並べます。
配列の比較: 配列内の要素の値が等しいかどうかを、equals メソッドを通じて比較します。
配列要素の検索: binarySearch メソッドを使用して、ソートされた配列に対して二分検索操作を実行できます。
具体的な手順については、以下の表をご確認ください:
シリアル番号 | 方法と手順 |
---|---|
1 | public static int binarySearch(Object[] a, Object key) 二分検索アルゴリズムを使用して、指定された配列内の指定された値を持つオブジェクト (Byte、Int、double など) を検索します。配列は呼び出す前にソートする必要があります。ルックアップ値が配列に含まれている場合は検索キーのインデックスを返し、それ以外の場合は (-(挿入ポイント) - 1) を返します。 |
2 | public static booleanquals(long[] a, long[] a2) 指定された 2 つの long 配列が互いに等しい場合に true を返します。 2 つの配列に同じ数の要素が含まれており、両方の配列内の対応する要素のペアがすべて等しい場合、2 つの配列は等しいとみなされます。つまり、2 つの配列に同じ要素が同じ順序で含まれている場合、それらの配列は等しいと言えます。同じアプローチは、他のすべての基本データ型 (Byte、short、Int など) にも機能します。 |
3 | public static void fill(int[] a, int val) 指定された int 型の配列の指定された範囲内の各要素に、指定された int 値を割り当てます。同じアプローチは、他のすべての基本データ型 (Byte、short、Int など) にも機能します。 |
4 | public static void sort(Object[] a) 指定されたオブジェクトの配列を、その要素の自然な順序に従って昇順に並べ替えます。同じアプローチは、他のすべての基本データ型 (Byte、short、Int など) にも機能します。 |