プログラミングでは多くの場合、大規模なデータセットの管理と操作が必要となるため、効率的かつ効果的なデータ構造が重要です。配列はコンピューター サイエンスの基本的なデータ構造であり、同じタイプの要素の固定サイズのシーケンスを格納する手段を提供します。このブログでは、Java の配列について詳しく説明し、配列とは何か、その構文、配列の操作方法、メモリ管理について理解します。
Java で変数を操作する場合、次のようにそれぞれを個別に宣言して初期化できます。
java int a = 19; String name = "John Doe";
ただし、同じ型の複数の値を処理する必要がある場合、このアプローチは非効率的になります。たとえば、複数のロール番号または名前を保存する場合、それぞれの値をハードコーディングするのは現実的ではありません。配列は、値のコレクションを効率的に保存できるので便利です。たとえば、5 つのロール番号を保存する必要がある場合は、配列を利用できます。
配列は基本的に、同じタイプのデータ項目のコレクションです。配列には、オブジェクトだけでなく、整数、浮動小数点、文字などのプリミティブ データ型も格納できます。例えば:
int[] rollNumbers = new int[5]; String[] names = {"Alice", "Bob", "Charlie"};
Java で配列を宣言するための構文は簡単です:
dataType[] arrayName = new dataType[size];
たとえば、5 つの整数の配列を作成するには:
int[] rollNumbers = new int[5];
または、配列を 1 行で宣言して初期化することもできます。
int[] rollNumbers = {23, 55, 9, 18, 45};
配列では、すべての要素が同じ型である必要があります。単一の配列内で型を混在させることはできません。例えば:
int[] nums = {1, 2, "three"}; // Will cause a compile-time error
配列が作成されると、そのサイズは固定されます。サイズを拡大または縮小することはできません。この制約により、多くの場合、より動的なデータ要件のために ArrayList などの他のデータ構造が選択される可能性があります。
Java の配列は次のもので構成されます:
配列を宣言すると、参照がスタック メモリに作成され、配列オブジェクトがヒープ メモリに格納されます。
配列のメモリ割り当てには 2 つの重要な段階があります:
例えば:
int[] rollNumbers; // Declaration rollNumbers = new int[5]; // Initialization
Java は動的メモリ割り当てを実行します。つまり、実行時に必要に応じてメモリが割り当てられ、メモリ管理が効率化されます。
配列にユーザー入力を入力するには、コンソールから入力を読み取るスキャナーとともにループを使用できます。
Scanner scanner = new Scanner(System.in); int[] arr = new int[5]; for (int i = 0; i配列の印刷
ループまたは Arrays.toString() ユーティリティ メソッドを使用して配列を出力すると、より読みやすい出力が得られます。
for (int i = 0; iまたは
System.out.println(Arrays.toString(arr));多次元配列
2 次元配列、つまり行列は、配列の配列です。 2D 配列の構文は次のようになります:
int[][] matrix = new int[3][3];例
int[][] matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };2D 配列への要素の動的入力には、ネストされたループが使用されます。
ArrayList: 動的な代替手段
Java の配列はサイズが固定されているため、コンパイル時に要素の数が不明な場合は非効率になります。この制限は、Java Collections Framework の一部である ArrayList クラスを使用することで克服できます。
ArrayList の使用
ArrayList クラスは動的なサイズ変更を提供します。 ArrayList を作成するための構文は次のとおりです:
ArrayListnumbers = new ArrayList(); 要素を動的に追加および操作できます:
numbers.add(1); numbers.add(2); numbers.add(3); System.out.println(numbers); // Output: [1, 2, 3] numbers.set(1, 10); // Change element at index 1 System.out.println(numbers); // Output: [1, 10, 3] numbers.remove(0); // Remove element at index 0 System.out.println(numbers); // Output: [10, 3] boolean contains = numbers.contains(10); // Check if the list contains 10 System.out.println(contains); // Output: trueArrayList の内部動作
内部的には、ArrayList は初期固定容量の動的配列を使用します。この容量が使い果たされると、より大きな容量を持つ新しい配列が作成され、既存の要素がコピーされます。このプロセスにより、要素が追加されるにつれて ArrayList が動的に拡張できるようになります。
一般的な配列操作
最大要素の検索
配列内の最大要素を見つけるには、配列を反復処理して最大値を追跡します:
int max = arr[0]; for (int i = 1; i max) { max = arr[i]; } } System.out.println("Maximum value: " max);配列を反転する
配列を反転するには、2 ポインター手法を使用します。
public static void reverse(int[] arr) { int start = 0; int end = arr.length - 1; while (startリバース関数の呼び出し:
int[] arr = {1, 2, 3, 4, 5}; reverse(arr); System.out.println(Arrays.toString(arr)); // Output: [5, 4, 3, 2, 1]結論
配列は Java の重要なデータ構造であり、データ セットの効率的な保存と操作を可能にします。配列はサイズが固定されていますが、同種のデータ型を扱う場合には強力で多用途です。動的なデータのニーズに対して、ArrayList はさらなる柔軟性を提供し、サイズを任意に拡大できます。これらの構造とその操作を理解することで、より高度なプログラミングとデータ管理の基礎が築かれます。さらに、配列操作を練習し、その基礎となるメモリ管理を理解することは、より効率的で最適化されたコードを作成するのに役立ちます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3