ユーティリティ 3章 Set
3.3. java.util.TreeSet
「java.util.TreeSet」は「java.util.SortedSet」インタフェースを実装した「HashSet」の拡張クラスで、順序付けて値を保存します。順序付けは「java.lang.Comparable」インタフェースによる場合と、「java.util.Comparator」による場合の2通りあります。「Comparable」インタフェースの場合は、保存されるオブジェクト自身で比較が行われます。「Comparator」の場合は、このインタフェースを実装したクラスが比較を行い、順序付けをします。
「TreeSet」の使用方法は、「HashSet」とほぼ同じです。コンストラクタで「Comparator」を指定した場合にはそれに基づいて順序付けられ、指定されなかった場合には挿入されるオブジェクト自身で順序付けが実行されます。順序付けをする分、実行速度が遅くなります。比較不可能なオブジェクトが追加された場合には「java.lang.ClassCastException」例外が発生します。
Comparator comparator = new MyComparator(); Set set = new TreeSet(comparator); set.add("japan"); set.add("china");
「HashSet」と同じく「iterator()」メソッドで「Iterator」インタフェースを取得できますが、それから取得されるオブジェクトの順番は順序付けされた順番と同じになります。
また以下は「SortedSet」で拡張定義されたメソッド一覧です。「TreeSet」では「Set」で定義されているメソッドに加えて、こららのメソッドも使用可能です。
Comparator comparator() | オブジェクトの比較に使用した「Comparator」を返します。 |
Object first() | セット内の要素の順番で、最初に位置するオブジェクトを返します。 |
Object last() | セット内の要素の順番で、最後に位置するオブジェクトを返します。 |
SortedSet headSet(Object) | 引数で指定された要素より小さい要素からなる「SortedSet」を返します。引数で指定された要素は返り値に含まれません。 |
SortedSet tailSet(Object) | 引数で指定された要素以上の要素からなる「SortedSet」を返します。引数で指定された要素も返り値に含みます。 |
SortedSet subSet(Object,Object) |
第1引数以上、第2引数より小さい要素からなる「SortedSet」を返します。第1引数の要素は返り値に含まれませんが、第2引数の要素は含まれます。 |
(実習課題3)
実習課題1で作成したコンソール・プログラムを改良しなさい。
- 「HashSet」ではなく「TreeSet」を使用すること。
- 実習課題2で作成したクラスを利用する事。