データ管理へ戻る | サンプル集目次へ戻る

実行結果
Hokabenサンプルソース
Javaの便利なパッケージjava.utilからMapを紹介。 「キー」と「値」の組み合わせで、お弁当のメニューを管理しよう。ちなみに、自分は、週に2回は「ほか弁」食べてます。
Hokaben.java
/**
 * 愛のJava256本ノック for Java 5.0
 * Javaサンプルソース ver0.2C "Hokaben"
 * Hokaben.java 「Mapを使ってデータ管理」
 *
 * 2005/09/23 制作:安永ノリカズ
 *
 * 【コンパイル&実行方法】
 *     >javac Hokaben.java
 *     >java Hokaben
 * 【キーワード】
 *     コレクションフレームワーク(collections framework),
 *     ハッシュ法(hashing), データ検索アルゴリズム, 
 *     ジェネリックス(generics), ボクシング(boxing), アンボクシング(unboxing),
 * 【試してみよう】
 *     System.out.println(L00)で、マップの内容を表示してみる。
 *     コマンドラインから弁当名を受け取って、価格を検索して表示する。
 */
import java.lang.Integer;
import java.lang.NullPointerException;
import java.lang.String;
import java.lang.System;
import java.util.Map;
import java.util.HashMap;

public class Hokaben {
    public static void main(String[] args) {
        Map<String, Integer> L00 = new HashMap<String, Integer>();
        
        L00.put("のり弁当", 290);
        L00.put("から揚弁当", 390);
        L00.put("チキン南蛮弁当", 460);
        L00.put("デミハンバーグ弁当", 420);
        L00.put("シャケ弁当", 380);
        L00.put("ロースカツ弁当", 560);
        L00.put("幕の内弁当", 450);
        L00.put("ビーフカレー", 390);
        L00.put("親子丼", 390);
        L00.put("ビッグチキンカツ弁当", 390);

        System.out.println("〜 弁当の金額を検索 〜");
        M00(L00, "幕の内弁当");
        M00(L00, "チキン南蛮弁当");
        M00(L00, "フォアグラ弁当");
        M00(L00, "ビッグチキンカツ弁当");
    }

    public static void M00(Map<String, Integer> A00, String A01) {
        try {
            int L00 = A00.get(A01);
            System.out.printf("「%s」%d円%n", A01, L00);
        } catch (NullPointerException L01) {
            System.out.printf("「%s」はメニューにございません。%n", A01);
        }
    }
}

/* ■ クラスの外でちょっと一言 ■
Mapは、今回の例でいえば「弁当名」と「値段」のような感じで、「キー」と
「値」がペアになった情報を扱うときに使います。データ量が増えても、キーで
検索すれば、値を素早く取り出せるのが特徴です。

Map<String, Integer>という宣言は、キーはString型、値はInteger型しかダメ
よ、という意味で、違う種類のデータが入ることを未然に防ぐ働きがあります。
実際には、putでデータを追加するときも、getで値を取り出すときも、基本型の
intを使ってますが、これはint型とInteger型が自動的に変換されるという機能
が可能にしている記述方法です。

Mapはあくまでもインターフェースですので、newする場合は、HashMap、
TreeMap、LinkedHashMapなどのクラスを使うことになります。それぞれ特徴があ
るんですが、今回は一番高速に動作するHashMapを採用しました。ただし変数は
Map型として宣言してますので、他のMap系クラスを使う場合も、newのところさ
え書き換えればOK。弁当価格検索メソッドを修正する必要はありません。

このように、「Mapインターフェースを実装したヤツなんでも来い」状態で変数
を宣言しておくと、後々、ソースコードの再利用性が高まるわけですね。オブ
ジェクト指向に慣れていないと、いまひとつピンと来ないかもしれませんが、イ
ンターフェース経由でインスタンスをいじくるのが、Javaでは一つのスタイルに
なってますので、どんどん真似していって下さい。
 */
↑ 先頭へ戻る

安永ノリカズのゲーム制作&Javaサンプル集 / Java初心者用サンプル集『愛のJava256本ノック』