オブジェクト

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におけるオブジェクトの配列とリストの作成方法、使い分けのポイント、そして実践的な活用例を紹介しました。

配列は固定サイズのデータを効率的に管理するのに適している一方で、リストは動的に要素を追加・削除できる柔軟性を持っています。

これらの特性を理解し、実際のプログラムに応用することで、より効果的なデータ管理が可能になります。

今後は、実際のプロジェクトで配列とリストを使い分けて、プログラミングスキルをさらに向上させてみてください。

関連記事

Back to top button