ユーティリティ 4章 Map
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」を使用すること。