【解説】Java初心者向けMapの使い方! HashMapで電話帳を作る
目次
こんにちは、飯塚です。
今回は下記の練習問題の解説です。まだ問題を見ていないという方は、ぜひ一度見て解いてみてください。Mapを理解するのに役立つと思います。
【練習問題】Java初心者向けMapの使い方! HashMapで電話帳を作る
回答例サンプルコード
回答例はこんな感じです。思ったよりシンプルでしょうか。
import java.util.HashMap; import java.util.Scanner; public class SampleHashMapAnswer { public static void main(String[] args) { // HashMapで電話帳を作成する HashMap<String, String> phoneBook = new HashMap<String, String>(); phoneBook.put("田中", "080-1234-5678"); phoneBook.put("鈴木", "090-0000-0000"); phoneBook.put("ジョンソン", "001-010-1-888-888-8888"); // Scannerのインタンスを生成する Scanner scanner = new Scanner(System.in); // ユーザーに入力を促す System.out.println("電話番号を知りたい方の名前を入力してください。"); System.out.print("> "); // 入力された内容を受け取る String inputName = scanner.nextLine(); // Scannerをクローズ scanner.close(); // 電話帳から入力された名前と紐づく電話番号を取得 String phoneNumber = phoneBook.get(inputName); if (phoneNumber != null) { // 電話番号あり System.out.println("電話番号は " + phoneNumber + " です。"); } else { // 電話番号なし System.out.println("電話帳に名前が登録されていません。別の方の名前を入力してください。"); } } }
Mapとは何か
Mapとは「キー(他と区別するための呼び名)」と「値」のセットで、データを管理する形の1つです。
今回の電話帳の問題では、
・名前(例:田中)が「キー」
・電話番号(例:080-1234-5678)が「値」
でした。
Mapを使うことで何が良いかというと、「値」が難しかったり複雑なものだとしても、「キー」さえ分かればデータを区別できることです。
今回のプログラムを使うと、電話番号を覚えていなくても名前だけが分かれば、知りたい電話番号を1つに絞って出力することができますよね。
注意点としては、「キー」は被ってはいけないということです。電話帳に同じ名前が2件登録されていると、どちらが電話番号を知りたい相手か分からないですよね。
もし「田中」が2人いたとしたら、「田中 一郎」「田中 次郎」のように、「キー」が被らないように登録する必要があります。
HashMapを使ったプログラムの書き方
回答例のソースを例に、プログラムの書き方を解説します。
インスタンスの作成方法は下記です。ArrayListの書き方と似ていますね。
HashMap<String, String> phoneBook = new HashMap<String, String>();
インスタンス作成時にキーと値の型を指定します。今回でいうとHashMap<名前、電話番号>なので、どちらもStringです。
HashMap<String, String>
putメソッドを使うことで、キーと値のセットをインスタンスに詰めることができます。
phoneBook.put("田中", "080-1234-5678");
詰めた値を取り出すのに使うのが、getメソッドです。
phoneBook.get(input)
HashMapを使った応用問題
実力試しの応用問題です。名前や電話番号、住所はどんな値でもOKです。ご自由に作ってみてください。
まとめ
いかがでしょうか。
始めてMapを知ったときは、こんな便利なものがあったんだなと感動した覚えがあります。HashMapの他にもTreeMapやLinkedHashMapがあるので、ぜひ勉強してみてください。
《関連記事》