目次へ

4.2. java.util.TreeMap

「java.util.TreeMap」は「HashMap」の拡張で、順序付けて値を保存するのが特徴です。「TreeSet」の場合と同じく、順序付けは「java.lang.Comparable」による場合と「java.util.Comparator」による場合の2通りあります。「TreeMap」はキーと値の2種類の情報を保存しますが、順序付けの対象はキーです。従ってキーとなるクラスが「Comparable」を実装しているか、またはキーとなるクラスに対して比較を行う「Comparator」が存在する必要があります。

使用法は「HashMap」とほぼ同じで、「TreeSet」と同じく順序付けをする分、実行速度が遅くなります。比較不可能なオブジェクトが追加された場合には「java.lang.ClassCastException」例外を発生します。

Comparator comparator = new MyComparator();
Map map = new TreeMap(comparator);
map.put("japan", "tokyo");
map.put("china", "shang-hai");

また「TreeMap」は「SortedMap」インタフェースを実装しているので、「HashMap」に加えて以下のメソッドが使用可能です。

Comparator comparator() 比較に使用した「Comparator」オブジェクトを返す。
Object firstKey() 最初のキーを返す。
Object lastKey() 最後のキーを返す。
SortedMap headMap(Object) 引数で指定されたオブジェクトより小さいキーからなる「SortedMap」を返す。指定されたオブジェクトはキーとして含まれない。
SortedMap tailMap(Object) 引数で指定されたオブジェクト以上のキーからなる「SortedMap」を返す。指定されたオブジェクトはキーとして含まれる。
SortedMap subMap(Object,Object) 第1引数で指定されたオブジェクト以上、第2引数で指定されたオブジェクトより小さいキーからなる「SortedMap」を返す。第1引数は含まれるが、第2引数は含まれない。

(実習課題2)

実習課題1のプログラムを改良しなさい。

  • 「HashMap」の代わりに「TreeMap」を使用すること。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp
  • シナジーマーケティング研究開発グループブログ