12.Map

Map構造 コレクションクラス

Map構造は、キーと値をセットにしたものを1つの要素として管理するデータ構造です。
HashMap」「TreeMap」の2種類があります。

Map構造

要素がキーと値で管理されているので、キーを指定して値の取得や更新、削除を行います。

Map構造は、キーによって値を管理するためキーの重複は不可です。
(同じキーがセット(put)された場合は上書きされます。)

マップ(HashMap)

HashMap は、名前(キー)と値の組み合わせを要素として持つ配列です。

HashMapは格納順は管理されません。キーと値にnullを使用することが可能です。

HashMap hm = new HashMap();

hm.put("Brian Kernighan","A REGULAR EXPRESSION MATCHER");
hm.put("Karl Fogel","SUBVERSION'S DELTA EDITOR: INTERFACE AS ONTOLOGY");
hm.put("Jon Bentley","THE MOST BEAUTIFUL CODE I NEVER WROTE");
hm.put("Tim Bray","FINDING THINGS");

println("Get a Element > " + hm.get("Brian Kernighan") );
println("Get a Element > " + hm.get("Jon Bentley") );

マップ(TreeMap)

TreeMap も HashMap と同じように使用できます。要素がキーによって自動的にソートされる点が HashMap と異なります。TreeMapはnullは使用することができません。

インタフェイスの活用

さらに便利なことに,コレクションクラスはCollectionMapというインタフェイスを実装しています。Java言語の仕組み上,インタフェイスのオブジェクトにはそのインタフェイスを実装したクラスのオブジェクトへの参照を持たせることができます。

次のスケッチのように,カチッ!カチッ!とコードを切り替えて,ほとんど同じコードで全く別のデータを取り扱えます。これこそコレクションクラスを利用するメリットです。もっと言えば,オブジェクト指向プログラミングのメリットです。

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

HashMap hm = new HashMap();
Map m;
m = hm;
m.put("Brian Kernighan","A REGULAR EXPRESSION MATCHER");
m.put("Karl Fogel","SUBVERSION'S DELTA EDITOR: INTERFACE AS ONTOLOGY");
m.put("Jon Bentley","THE MOST BEAUTIFUL CODE I NEVER WROTE");
m.put("Tim Bray","FINDING THINGS");

HashMap hm2 = new HashMap();
m = hm2;
m.put(1,123);
m.put(2,223);
m.put(3,323);

m = hm;
println("Get a Element from Interface m > " + m.get("Tim Bray") );
m = hm2;
println("Get a Element from Interface m > " + m.get(2) );

m = hm;
Set s = m.keySet();
for(Object o : s){
  println("Element is " + m.get(o) );
}
m = hm2;
s = m.keySet();
for(Object o : s){
  println("Element is " + m.get(o) );
}

演習

(難易度:easy)

MapInterface.pdeのコード末尾にあるforループを切り分けましょう。そして,Mapインタフェイスを実装したクラスであれば何であれ,受け取って要素に格納された値を列挙するメソッドにしてください。ファイル名はUsefulMapInterface.pdeとしてください。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


Related Post

5.Search5.Search

サーチ(Search)とは,複数のデータの中から特定のデータを見つけ出す作業のことです。日本語では探索や検索と呼びます。 サーチのアルゴリズムには,ランダムなデータを取り扱えるものと,ソート済みのデータを取り扱うものとがあります。 リストサーチ(list search) データのリスト構造とはA, B, C, ……のように,データが次々と連続している構造のことを言います。代表例は配列です。 そのようなリスト構造を持つデータの集合を探索するためのアルゴリズムを,ここではリストサーチと呼びます。 探索のアルゴリズム 線形探索 二分探索 ハッシュ法 線形探索 線形探索という言葉は英語のLinear Searchの直訳です。線形探索はリストの先頭から終端に向かって目的の要素を探し出すアルゴリズムです。 目的の要素であるという判定は比較によって行います。 アルゴリズム分析 リストの先頭から要素を取り出す 取り出した要素の値と探したい要素の値を比較する […]

11.List11.List

List構造 コレクションクラス List構造は、要素を順番付けして管理するデータ構造です。 「ArrayList」「LinkedList」の2種類があります。 要素がインデックス(番号)順に並んでいるので、番号を指定して要素の取得、挿入、更新、削除ができます。また、Iteratorや拡張for構文を使って先頭から順番に要素を取得することも出来ます。 ArrayListは要素の取得が早いが挿入や削除が遅い、LinkedListは要素の挿入や削除は早いが取得が遅いという特徴があります。 List構造は、要素の重複は可能です。 リスト(ArrayList) ArrayList は配列を扱う一般的なクラスです。 下記などのメソッドが用意されています。 list.add(o) – オブジェクト o を配列の末尾に追加する list.add(n, o) – オブジェクトを […]

2.Install Java env.2.Install Java env.

Javaのインストール MacBookでのJavaのインストール方法 http://java.com/ja/download/help/mac_install.xml MacにJavaをインストールするには、次の手順に従います。 jre-7u6-macosx-x64.dmgファイルをダウンロードします。ファイルをダウンロードする前に、使用許諾契約の内容を確認し、同意します。 .dmgファイルをダブルクリックして起動します パッケージ・アイコンをダブルクリックし、インストール・ウィザードを起動します 結果確認 chen-no-MacBook-Air:~ chen$ java -version java version “1.8.0_11” Java(TM) SE Runtime Environment (build […]