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では一つのスタイルに なってますので、どんどん真似していって下さい。 */