Java プラットフォーム 1.2

java.util
インタフェース SortedMap

既知の実装クラスの一覧:
TreeMap

public abstract interface SortedMap
extends Map

マップ自身が昇順のキー順になることを保証します。ただし、キーの昇順は、そのキーの「自然順序付け」(Comparable インタフェースを参照) に従ってソートされた昇順、またはソートマップ作成時に提供されるコンパレータによってソートされた昇順です。この順序は、ソートマップのコレクションビュー (entrySetkeySetvalues メソッドによって返される) の繰り返し処理時に反映されます。その順序付けを利用するために、追加のオペレーションがいくつか提供されています。このインタフェースは SortedSet インタフェースのマップに類似しています。

ソートマップに挿入されるすべてのキーは、Comparable インタフェースを実装するか、指定されたコンパレータによって受け付けられる必要があります。さらに、そのようなすべてのキーは「相互に比較可能」である必要があります。つまり、k1.compareTo(k2) (または comparator.compare(k1, k2)) は、ソートマップ内の任意の要素 k1k2 に対しても ClassCastException をスローしてはなりません。この制約に違反しようとすると、その違反側のメソッドやコンストラクタ呼び出しは ClassCastException をスローします。

ソートマップが正しく Map インタフェースを実装する必要がある場合は、明示的なコンパレータの提供の有無にかかわらず、ソートマップで管理される順序付けは「equals と一貫性」がなければなりません (「equals との一貫性」の正確な定義については、Comparable インタフェースまたは Comparator インタフェースを参照)。これは Map インタフェースが equals オペレーションに基づいて定義されるためですが、ソートマップはその compareTo メソッドまたは compare メソッドを使ってすべてのキー比較を実行するので、このメソッドによって等価と見なされる 2 つのキーは、ソートマップの見地からすれば同じものです。ツリーマップの動作は、その順序付けが equals と一貫性がない場合でも明確に定義されています。つまり、ツリーマップの動作は Map インタフェースの一般規約に従っていません。

汎用のソートマップ実装クラスはすべて、4 つの標準コンストラクタを提供する必要があります。その 4 つとは、1) void (引数なし) コンストラクタ、そのキーの「自然順序付け」に従ってソートされた空のソートマップを作成するもの、2) Comparator 型の引数を 1 つ持つコンストラクタ、指定されたコンパレータに従ってソートされた空のソートマップを作成するもの、3) Map 型の引数を 1 つ持つコンストラクタ、キーの自然順序付けに従ってソートされた、その引数と同じキーと値のマッピングを持つ新しいマップを作成するもの、4) ソートマップ型の引数を 1 つ持つコンストラクタ、入力のソートマップと同じキーと値のマッピングと同じ順序付けを持つ新しいソートマップを作成するものです。インタフェースはコンストラクタを保持できないので、これを強制的に推奨することはできませんが、JDK の実装 (TreeMap) はこれに準拠します。

導入されたバージョン:
JDK1.2
関連項目:
Map, TreeMap, SortedSet, Comparator, Comparable, Collection, ClassCastException

クラス java.util.Map から継承した内部クラス
Map.Entry
 
メソッドの概要
 Comparator comparator()
          このソートマップに関連付けられているコンパレータを返します。
 Object firstKey()
          ソートマップ内に現在ある最初 (下限) のキーを返します。
 SortedMap headMap(Object toKey)
          ソートマップの toKey より小さいキーを持つ部分のビューを返します。
 Object lastKey()
          ソートマップ内に現在ある最後 (上限) のキーを返します。
 SortedMap subMap(Object fromKey, Object toKey)
          このソートマップの fromKey (含む) 〜 toKey (含まない) のキー範囲を持つ部分のビューを返します (fromKeytoKey が同じ場合は、空のソートマップが返される)。
 SortedMap tailMap(Object fromKey)
          ソートマップの fromKey 以上のキーを持つ部分のビューを返します。
 
インタフェース java.util.Map から継承したメソッド
clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, values
 

メソッドの詳細

comparator

public Comparator comparator()
このソートマップに関連付けられているコンパレータを返します。ただし、そのキーの自然順序付けを使う場合は null を返します。
戻り値:
このソートマップに関連付けられているコンパレータ。そのキーの自然順序付けを使う場合は null

subMap

public SortedMap subMap(Object fromKey,
                        Object toKey)
このソートマップの fromKey (含む) 〜 toKey (含まない) のキー範囲を持つ部分のビューを返します (fromKeytoKey が同じ場合は、空のソートマップが返される)。返されるソートマップはこのソートマップに基づいており、返されるソートマップでの変更はこのソートマップで反映され、この逆も成り立ちます。返される Map は、このソートマップがサポートする任意のマップオペレーションをすべてサポートします。

このメソッドによって返されるマップは、ユーザがキーを指定された範囲外に挿入しようとすると IllegalArgumentException をスローします。

注: このメソッドは常に、その下限点は含むが上限点は含まない「片側が開いた範囲」を返します。上下限点を含む「閉じた範囲」が必要で、キーの型が直後のキーの計算を可能にしている場合、単に lowEndpoint から直後のキー (highEndpoint) までの部分範囲を指定してください。たとえば、m はそのキーが文字列のマップである場合、次のイディオムは、キーが lowhigh までの範囲 (上下限点を含む) にある m 内のすべてのキーと値のマッピングを保持するビューを取得します。

    Map sub = m.subMap(low, high+"¥0");
同様のテクニックを使って、上下限点のどちらも含まない「開いた範囲」を生成できます。次のイディオムは、キーが lowhigh までの範囲 (上下限点を含まない) にある m 内のすべてのキーと値のマッピングを保持するビューを取得します。
    Map sub = m.subMap(low+"¥0", high);
パラメータ:
fromKey - subMap の下限点 (含む)
toKey - subMap の上限点 (含まない)
戻り値:
このソートマップ内の指定された範囲のビュー
例外:
ClassCastException - fromKey または toKey が、ソートマップ内に現在あるキーと比較できない場合。実装は、必ずしも要求されるわけではないが、こうした状況下でこの例外をスローする場合がある
NullPointerException - fromKey または toKeynull で、このソートマップが null キーを許容しない場合
IllegalArgumentException - fromKeytoKey より大きい場合

headMap

public SortedMap headMap(Object toKey)
ソートマップの toKey より小さいキーを持つ部分のビューを返します。返されるソートマップはソートマップに基づいており、返されるソートマップでの変更はソートマップで反映され、その逆も成り立ちます。返されるマップは、ソートマップがサポートするオプションのマップオペレーションをすべてサポートします。

このメソッドによって返されるマップは、ユーザがキーを指定された範囲外に挿入しようとすると IllegalArgumentException をスローします。

注: このメソッドは常に、その (上) 限点を含まないビューを返します。この限点を含むビューを必要とし、キーの型が直後のキーの計算を可能にしている場合は、単に直後のキー (highEndpoint) によって限界を設けられた headMap を指定してください。たとえば、m はそのキーが文字列のマップである場合、次のイディオムは、キーが high 以下の m 内のすべてのキーと値のマッピングを保持するビューを取得します。

    Map head = m.headMap(high+"¥0");
パラメータ:
toKey - subMap の上限点 (含まない)
戻り値:
ソートマップの指定の初期範囲のビュー
例外:
ClassCastException - toKey は、ソートマップ内に現在あるキーと比較できない場合。実装は、必ずしも要求されるわけではないが、こうした状況下でこの例外をスローする場合がある
NullPointerException - toKeynull で、ソートマップが null キーを許容しない場合

tailMap

public SortedMap tailMap(Object fromKey)
ソートマップの fromKey 以上のキーを持つ部分のビューを返します。返されるソートマップはソートマップに基づいており、返されるソートマップでの変更はソートマップで反映され、その逆も成り立ちます。返されるマップは、ソートマップがサポートするオプションのマップオペレーションをすべてサポートします。

このメソッドによって返されるマップは、ユーザがキーを指定された範囲外に挿入しようとすると IllegalArgumentException をスローします。

注: このメソッドは常に、その (下) 限点を含むビューを返します。この限点を含まないビューを必要とし、要素の型が直後の要素の計算を可能にしている場合、単に 直後の値 (lowEndpoint) によって限界を設けられた tailMap を指定してください。たとえば、m はそのキーが文字列のマップである場合、次のイディオムは、キーが high より大きい m 内のすべてのキーと値のマッピングを保持するビューを取得します。

    Map tail = m.tailMap(low+"¥0");
パラメータ:
fromKey - tailMap の下限点 (含む)
戻り値:
ソートマップの指定の最終範囲のビュー
例外:
ClassCastException - fromKey がソートマップ内に現在あるキーと比較できない場合。実装は、必ずしも要求されるわけではないが、こうした状況下でこの例外をスローする場合がある
NullPointerException - fromKeynull で、ソートマップが null キーを許容しない場合

firstKey

public Object firstKey()
ソートマップ内に現在ある最初 (下限) のキーを返します。
戻り値:
ソートマップ内に現在ある最初 (下限) のキー
例外:
NoSuchElementException - マップが空の場合

lastKey

public Object lastKey()
ソートマップ内に現在ある最後 (上限) のキーを返します。
戻り値:
ソートマップ内に現在ある最後 (上限) のキー
例外:
NoSuchElementException - マップが空の場合

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.