Java – オブジェクトの配列やリストを作成する方法
Javaでは、オブジェクトの配列やリストを作成するには、クラスを定義し、そのクラス型の配列やリストを生成します。
配列の場合、ClassName[] array = new ClassName[size];
のように宣言し、各要素にインスタンスを代入します。
一方、リストはArrayList
などのコレクションを使用し、List<ClassName> list = new ArrayList<>();
と宣言してインスタンスを追加します。
オブジェクトの配列を作成する方法
Javaでは、オブジェクトの配列を簡単に作成することができます。
配列は固定サイズのデータ構造で、同じ型のオブジェクトを格納するのに適しています。
以下に、オブジェクトの配列を作成する方法を示します。
// 必要なパッケージをインポート
import java.util.Arrays;
class Person {
String name; // 名前
int age; // 年齢
// コンストラクタ
Person(String name, int age) {
this.name = name;
this.age = age;
}
// 情報を表示するメソッド
void displayInfo() {
System.out.println("名前: " + name + ", 年齢: " + age);
}
}
public class App {
public static void main(String[] args) {
// Personオブジェクトの配列を作成
Person[] people = new Person[3]; // 3つの要素を持つ配列
// 配列にオブジェクトを格納
people[0] = new Person("山田太郎", 25);
people[1] = new Person("鈴木花子", 30);
people[2] = new Person("佐藤次郎", 22);
// 配列の各オブジェクトの情報を表示
for (Person person : people) {
person.displayInfo(); // 情報を表示
}
}
}
名前: 山田太郎, 年齢: 25
名前: 鈴木花子, 年齢: 30
名前: 佐藤次郎, 年齢: 22
上記のコードでは、Person
クラスを定義し、そのインスタンスを格納する配列people
を作成しています。
配列のサイズは3で、各要素にPerson
オブジェクトを格納しています。
for
ループを使用して、配列内の各オブジェクトの情報を表示しています。
オブジェクトのリストを作成する方法
Javaでは、オブジェクトのリストを作成するために、ArrayList
クラスを使用します。
リストは可変サイズのデータ構造で、要素の追加や削除が容易です。
以下に、オブジェクトのリストを作成する方法を示します。
// 必要なパッケージをインポート
import java.util.ArrayList;
class Person {
String name; // 名前
int age; // 年齢
// コンストラクタ
Person(String name, int age) {
this.name = name;
this.age = age;
}
// 情報を表示するメソッド
void displayInfo() {
System.out.println("名前: " + name + ", 年齢: " + age);
}
}
public class App {
public static void main(String[] args) {
// Personオブジェクトのリストを作成
ArrayList<Person> people = new ArrayList<>(); // 空のリストを作成
// リストにオブジェクトを追加
people.add(new Person("山田太郎", 25));
people.add(new Person("鈴木花子", 30));
people.add(new Person("佐藤次郎", 22));
// リストの各オブジェクトの情報を表示
for (Person person : people) {
person.displayInfo(); // 情報を表示
}
}
}
名前: 山田太郎, 年齢: 25
名前: 鈴木花子, 年齢: 30
名前: 佐藤次郎, 年齢: 22
上記のコードでは、ArrayList
を使用してPerson
オブジェクトのリストpeople
を作成しています。
リストは動的にサイズを変更できるため、add
メソッドを使って新しいオブジェクトを簡単に追加できます。
for
ループを使用して、リスト内の各オブジェクトの情報を表示しています。
配列とリストの使い分け
Javaにおける配列とリストは、どちらもオブジェクトを格納するためのデータ構造ですが、それぞれの特性に応じて使い分けることが重要です。
以下に、配列とリストの主な違いと使い分けのポイントを示します。
配列とリストの比較表
特徴 | 配列 | リスト |
---|---|---|
サイズ | 固定サイズ | 可変サイズ |
要素の追加・削除 | 不可能(新しい配列を作成) | 可能(add, removeメソッド使用) |
メモリ効率 | 効率的 | ややオーバーヘッドあり |
型の制約 | 同じ型の要素のみ | ジェネリクスを使用して型を指定 |
速度 | 高速(インデックスアクセス) | やや遅い(リンクリストの場合) |
使い分けのポイント
- 固定サイズのデータが必要な場合: 配列を使用します。
例えば、要素数が決まっている場合や、パフォーマンスが重要な場合に適しています。
- 動的に要素を追加・削除する必要がある場合: リストを使用します。
例えば、ユーザーの入力に応じてデータが変化する場合や、要素数が不明な場合に便利です。
- メモリ効率を重視する場合: 配列が適しています。
特に、大量のデータを扱う場合は、配列の方がメモリを効率的に使用できます。
- 型の柔軟性が必要な場合: リストを使用します。
ArrayList
などのリストは、異なる型のオブジェクトを格納することができ、ジェネリクスを使って型安全に扱うことができます。
配列とリストはそれぞれ異なる特性を持っており、用途に応じて使い分けることが重要です。
固定サイズのデータには配列を、動的なデータにはリストを選択することで、効率的なプログラミングが可能になります。
実践例:オブジェクトの配列とリストを活用する
ここでは、オブジェクトの配列とリストを活用した実践的な例を示します。
この例では、学生の情報を管理するプログラムを作成します。
配列を使用して固定数の学生を管理し、リストを使用して動的に学生を追加・削除する方法を示します。
// 必要なパッケージをインポート
import java.util.ArrayList;
import java.util.Scanner;
class Student {
String name; // 名前
int id; // 学生ID
// コンストラクタ
Student(String name, int id) {
this.name = name;
this.id = id;
}
// 情報を表示するメソッド
void displayInfo() {
System.out.println("名前: " + name + ", 学生ID: " + id);
}
}
public class App {
public static void main(String[] args) {
// 学生の配列を作成(固定数)
Student[] fixedStudents = new Student[3];
fixedStudents[0] = new Student("田中一郎", 101);
fixedStudents[1] = new Student("山本二郎", 102);
fixedStudents[2] = new Student("佐々木三郎", 103);
// 配列の学生情報を表示
System.out.println("固定数の学生情報:");
for (Student student : fixedStudents) {
student.displayInfo(); // 情報を表示
}
// 学生のリストを作成(動的)
ArrayList<Student> dynamicStudents = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
// 学生を追加
System.out.println("新しい学生を追加します。名前と学生IDを入力してください。");
for (int i = 0; i < 2; i++) { // 2人の学生を追加
System.out.print("名前: ");
String name = scanner.nextLine();
System.out.print("学生ID: ");
int id = scanner.nextInt();
scanner.nextLine(); // 改行を消去
dynamicStudents.add(new Student(name, id)); // リストに追加
}
// リストの学生情報を表示
System.out.println("動的に追加した学生情報:");
for (Student student : dynamicStudents) {
student.displayInfo(); // 情報を表示
}
scanner.close(); // スキャナーを閉じる
}
}
固定数の学生情報:
名前: 田中一郎, 学生ID: 101
名前: 山本二郎, 学生ID: 102
名前: 佐々木三郎, 学生ID: 103
新しい学生を追加します。名前と学生IDを入力してください。
名前: 鈴木四郎
学生ID: 104
名前: 高橋五郎
学生ID: 105
動的に追加した学生情報:
名前: 鈴木四郎, 学生ID: 104
名前: 高橋五郎, 学生ID: 105
このプログラムでは、まず固定数の学生情報を配列fixedStudents
に格納し、表示しています。
その後、ArrayList
を使用して動的に学生を追加する機能を実装しています。
ユーザーからの入力を受け取り、新しい学生をリストに追加し、最終的に全ての学生情報を表示しています。
このように、配列とリストを組み合わせることで、異なる要件に応じたデータ管理が可能になります。
まとめ
この記事では、Javaにおけるオブジェクトの配列とリストの作成方法、使い分けのポイント、そして実践的な活用例を紹介しました。
配列は固定サイズのデータを効率的に管理するのに適している一方で、リストは動的に要素を追加・削除できる柔軟性を持っています。
これらの特性を理解し、実際のプログラムに応用することで、より効果的なデータ管理が可能になります。
今後は、実際のプロジェクトで配列とリストを使い分けて、プログラミングスキルをさらに向上させてみてください。