Java中級

中級 Javaで学ぶデータ構造|解説編

導入

データ構造は、プログラムの効率性や可読性に大きな影響を与える要素です。特に、中級エンジニアが直面するのは、実際の業務においてデータ構造を選定し、適切に活用する場面です。本記事では、実務でよく遭遇する「顧客情報管理システム」を例に挙げ、データ構造の選択がどのように業務に影響を及ぼすかを探ります。

教科書レベルの解説(データ構造)

重要な概念の整理

データ構造は、データの格納方法や操作方法を定義するものであり、これによりプログラムの性能や効率が左右されます。特に、データの挿入、削除、検索の効率は、選択するデータ構造に依存します。例えば、顧客情報を管理する場合、検索が頻繁に行われるため、適切なデータ構造を選ぶことが重要です。

コード例(Java)


import java.util.HashMap;
import java.util.Map;

public class CustomerManager {
    private Map customerData;

    public CustomerManager() {
        customerData = new HashMap<>();
    }

    public void addCustomer(int id, String name) {
        customerData.put(id, name);
    }

    public String getCustomer(int id) {
        return customerData.get(id);
    }

    public void removeCustomer(int id) {
        customerData.remove(id);
    }

    public void displayAllCustomers() {
        for (Map.Entry entry : customerData.entrySet()) {
            System.out.println("ID: " + entry.getKey() + ", Name: " + entry.getValue());
        }
    }

    public static void main(String[] args) {
        CustomerManager cm = new CustomerManager();
        cm.addCustomer(1, "Alice");
        cm.addCustomer(2, "Bob");
        cm.displayAllCustomers();
    }
}

コードの行ごとの解説

  1. import java.util.HashMap; – HashMapクラスをインポートし、キーと値のペアを格納するためのデータ構造を使用します。
  2. private Map customerData; – 顧客データを格納するためのHashMapを定義します。ここでは、顧客IDをキー、顧客名を値としています。
  3. public CustomerManager() { customerData = new HashMap<>(); } – コンストラクタでHashMapを初期化します。
  4. public void addCustomer(int id, String name) { customerData.put(id, name); } – 新しい顧客を追加するメソッドです。
  5. public String getCustomer(int id) { return customerData.get(id); } – 顧客IDを使って顧客名を取得するメソッドです。
  6. public void removeCustomer(int id) { customerData.remove(id); } – 顧客IDを使って顧客を削除するメソッドです。
  7. public void displayAllCustomers() { … } – すべての顧客情報を表示するメソッドです。
  8. public static void main(String[] args) { … } – プログラムのエントリーポイントで、顧客情報を追加し表示します。

解説編

この例では、顧客情報を管理するためにHashMapを選択しました。HashMapは、キーと値のペアを効率的に管理するのに適しており、特に検索や追加、削除が迅速に行える特徴があります。しかし、HashMapにはスレッドセーフではないという欠点があるため、マルチスレッド環境での使用には注意が必要です。代わりにConcurrentHashMapを使用することで、この問題を解決できます。

まとめ

  • データ構造の選定は、プログラムの性能に直接影響を与える。
  • HashMapを使用することで、顧客情報の管理が効率的に行えるが、スレッドセーフでない点に注意が必要。